Windows Registry (登錄) 是分層式資料庫,儲存作業系統核心設定、硬體配置、驅動程式參數、使用者偏好、應用程式設定。理解其結構對系統管理、應用程式開發、故障排除、安全稽核至關重要。本文針對 Windows NT 系列 (NT 4.0 / 2000 / XP / 2003 / Vista / 7 / 8 / 10 / 11) 詳細解析五大根鍵 (Root Keys) 及其關鍵子鍵功能。
| 根鍵 (HKEY) | 用途 | 備註 |
|---|---|---|
HKEY_CLASSES_ROOT (HKCR) | 檔案關聯、COM 類別註冊、OLE 物件、殼擴充 | HKLM\Software\Classes + HKCU\Software\Classes 合併視圖 |
HKEY_CURRENT_USER (HKCU) | 當前登入使用者設定 (桌面、環境、網路、應用程式偏好) | 對應 %USERPROFILE%\NTUSER.DAT,使用者登出卸載 |
HKEY_LOCAL_MACHINE (HKLM) | 電腦層級設定 (硬體、驅動、服務、軟體、安全、系統啟動) | 儲存於 %SystemRoot%\System32\config\ 下多個 Hive 檔 |
HKEY_USERS (HKU) | 所有載入使用者設定檔的容器 | 包含 .DEFAULT (新用戶範本) + 各用戶 SID 子鍵 |
HKEY_CURRENT_CONFIG (HKCC) | 當前硬體設定檔 (顯示、印表機等) 快速存取視圖 | 指向 HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current |
註: HKEY_DYN_DATA 僅存在於 Win9x/Me (動態硬體資訊),NT 系列為空或不存在。
HKLM 是最複雜、最關鍵的根鍵,包含五大核心子鍵:
DESCRIPTION\System\CentralProcessor:CPU 型號、頻率、特性。DESCRIPTION\System\FloatingPointProcessor:FPU 資訊。DESCRIPTION\System\Multiprocessor:多處理器設定。DEVICEMAP:序列埠、平行埠、滑鼠、鍵盤裝置對應。RESOURCEMAP:IRQ、I/O 連接埠、記憶體、DMA 通道分配表。SYSTEM 帳戶可讀寫,管理員也無法直接開啟 (RegEdit 顯示「拒絕存取」)。lusrmgr.msc、net user、SAM API (NetUserAdd 等)。%SystemRoot%\System32\config\SAM 檔案破解雜湊,**務必啟用 BitLocker/SysKey**。SYSTEM 專屬保護,一般編輯器不可存取。secpol.msc (本地安全性原則)、gpedit.msc (群組原則)。HKLM\Software\廠商名\產品名\版本\。Microsoft\Windows\CurrentVersion (Run/RunOnce、App Paths、Uninstall、Explorer 設定)。HKLM\Software\WOW6432Node\ (Registry Reflection)。%SystemRoot%\System32\config\SYSTEM。CurrentControlSet (符號連結 → ControlSet001 等):**目前啟動使用的控制集**。ControlSet001, ControlSet002...:多組控制集支援「上次正確配置」(LKGC)。Select:Current, Default, Failed, LastKnownGood 指向控制集編號。CurrentControlSet\Control:核心參數 (Session Manager、檔案系統、電源管理、時間)。CurrentControlSet\Services:**所有驅動程式與服務**的註冊資訊 (ImagePath, Start, Type, ErrorControl, DependOnService, Parameters...)。CurrentControlSet\Enum:PnP 列舉裝置樹 (PCI, USB, ACPI...)。NTUSER.DAT。Software:使用者層級應用程式設定 (優先於 HKLM)。Control Panel\Desktop:桌面背景、螢幕保護、滑鼠速度、鍵盤重複率。Network:對應網路磁碟機持久連線。Printers:列印偏好、預設印表機。Environment:使用者環境變數 (擴充後合併至進程環境區塊)。Volatile Environment:登入時動態建立 (LogonServer, SessionName 等)。NTUSER.DAT 同步至伺服器,跨電腦保持一致。HKLM\Software\Classes (機器級) + HKCU\Software\Classes (使用者級,優先)。.txt → txtfile → shell\open\command。CLSID\{GUID}\InprocServer32 指向 DLL 路徑。CLSID 或 ProgID\shellex。MIME\Database\Content Type, PROTOCOLS\Handler。.DEFAULT (系統預設/新用戶範本/登入畫面設定) + S-1-5-21-... (User SID)。服務若以使用者身分執行,其 HKCU 即對應此處對應 SID 子鍵。HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current 的便捷捷徑,提供當前硬體設定檔 (顯示解析度、印表機、停駐狀態) 的快速讀寫。筆電切換停駐站時即更新此處。| 操作 | Win32 API | .NET (C#) | PowerShell |
|---|---|---|---|
| 開啟鍵 | RegOpenKeyEx | RegistryKey.OpenBaseKey / OpenSubKey | Get-Item / Get-ChildItem |
| 讀取值 | RegQueryValueEx | GetValue / GetValueKind | Get-ItemProperty |
| 寫入值 | RegSetValueEx | SetValue | Set-ItemProperty / New-ItemProperty |
| 建立鍵 | RegCreateKeyEx | CreateSubKey | New-Item |
| 刪除鍵/值 | RegDeleteKey/Value | DeleteSubKeyTree / DeleteValue | Remove-Item / Remove-ItemProperty |
| 64/32 位元視圖 | KEY_WOW64_64KEY / 32KEY | RegistryView.Registry64 / Registry32 | Get-Item -View Registry64 |
HKLM\Software\Microsoft\Windows\CurrentVersion\Run/RunOnce, HKCU\...\Run/RunOnce, HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices/RunServicesOnce、Winlogon\Userinit/Shell、Services (HKLM\SYSTEM\CurrentControlSet\Services)。HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\app.exe\Debugger 被惡意軟體濫用攔截執行。HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs (需啟用 LoadAppInit_DLLs=1),全域 DLL 注入機制,常被 Rootkit 濫用。RegEdit → Permissions 或 Get-Acl 檢查敏感鍵 (SAM, SECURITY, Services, Run) 是否被非預期主體修改。HKCU\Software\Classes\VirtualStore\Machine\Software\,造成設定「寫入成功但讀不到」假象。Windows 登錄雖非關係式資料庫,但其嚴謹的分層結構、權限模型、事務支援 (Vista+ Kernel Transaction Manager) 使其成為系統組態中樞。熟悉五大根鍵職掌、HKLM 五大子鍵細節、64/32 位元重導向、虛擬化機制,是 Windows 系統工程師、安全研究員、應用程式開發者的必修課。