- UID
- 390967
- 帖子
- 1664
- 主題
- 857
- 精華
- 0
- 積分
- 869
- 楓幣
- 12340
- 威望
- 409
- 存款
- 10100
- 贊助金額
- 1800
- 推廣
- 0
- GP
- 2809
- 閱讀權限
- 150
- 在線時間
- 197 小時
- 註冊時間
- 2023-5-18
- 最後登入
- 2024-12-24
|
本帖最後由 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就是無權限操作
在基鍵下會有
機碼 - 如檔案總管內的目錄
登錄值組 - 如檔案總管內的檔案,內有值組名稱跟值組數值
大概知道以上分類後,就開始設計操作的功能,首先引用以下命名空間然後宣告定義一個登錄檔物件,此處選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");
複製代碼 |
|