SQL Server 擴展存儲過程 xp_regwrite、xp_regread 可直接操作 Windows 註冊表,常用於啟用 Jet 引擎沙箱模式、讀取啟動項等系統級運維場景。本文給出標準語法、參數解析與實戰範例。
-- 寫入註冊表
EXEC master..xp_regwrite
@rootkey = 'HKEY_LOCAL_MACHINE', -- 根鍵
@key = 'SOFTWARE\Microsoft\Jet\4.0\Engines', -- 子鍵路徑
@value_name = 'SandBoxMode', -- 值名稱
@type = 'REG_DWORD', -- 數據類型
@value = 1; -- 值數據
-- 讀取註冊表
EXEC master..xp_regread
@rootkey = 'HKEY_LOCAL_MACHINE',
@key = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon',
@value_name = 'Userinit'; -- 返回值輸出參數
| 根鍵常量 | 對應註冊表 |
|---|---|
| HKEY_LOCAL_MACHINE | HKLM (機器級) |
| HKEY_CURRENT_USER | HKCU (用戶級) |
| HKEY_CLASSES_ROOT | HKCR (文件關聯) |
| 類型常量 | 說明 | 示例值 |
|---|---|---|
| REG_DWORD | 32 位整數 | 0, 1 |
| REG_SZ | 字符串 | 'C:\path\app.exe' |
| REG_EXPAND_SZ | 可展開字符串 | '%SystemRoot%\system32' |
| REG_MULTI_SZ | 多字符串 | 數組形式 |
| REG_BINARY | 二進制數據 | 0x... |
SQL Server 使用 OPENROWSET/OPENDATASOURCE 導入 Access/Excel 時,默認禁止,需啟用 Jet 沙箱:
EXEC master..xp_regwrite
'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Jet\4.0\Engines',
'SandBoxMode',
'REG_DWORD',
1;
執行後需重啟 SQL Server 服務生效。
sysadmin 固定服務器角色權限