whitefox 發表於 2023-5-31 14:19:33

[C#] 登錄檔的增、刪、讀、寫操作

本帖最後由 whitefox 於 2023-6-1 10:24 編輯

!!對系統登錄檔的任意操作是有風險的,開始前請自行評估風險跟對系統的了解程度在進行操作

首先對Windows系統登錄檔結構做一簡單說明
登錄檔有五個主要個根節點,本文稱為基鍵(Root Key),如下:

[*]HKEY_CLASSES_ROOT
[*]HKEY_CURRENT_USER
[*]HKEY_LOCAL_MACHINE
[*]HKEY_USERS
[*]HKEY_CURRENT_CONFIG

以上各有不同用途跟權限,這裡使用HKEY_CURRENT_USER,建議若還不了解各個用途前可以先以這個來測試
若遇到錯誤為UnauthorizedAccessException就是無權限操作

在基鍵下會有
機碼        - 如檔案總管內的目錄
登錄值組  - 如檔案總管內的檔案,內有值組名稱跟值組數值

大概知道以上分類後,就開始設計操作的功能,首先引用以下命名空間using Microsoft.Win32;然後宣告定義一個登錄檔物件,此處選HKEY_CURRENT_USER,路徑使用SOFTWARE\TEST\public RegistryKey RegKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\TEST", true);寫入一組值組,名稱Sample,內容值1st的字串RegKey.SetValue("Sample1", "1st");嘗試讀取並用對話框顯示出來,值組數值可以為字串/二進制值/DWORD/QWORD/多字串值/可擴充字串值,這裡不管是什麼只要不是NULL,就一律型轉成字串string msg = RegKey.GetValue("Sample1")?.ToString();
MessageBox.Show("Name: Sample1\r\nValue: " + msg);測試完以上後,就可以刪除此機碼RegKey.DeleteSubKey("Sample1");若該機碼下又有子機碼,要刪除層層機碼的話,就要用這個樹狀刪除功能RegKey.DeleteSubKeyTree("Sample1");
頁: [1]
查看完整版本: [C#] 登錄檔的增、刪、讀、寫操作