冰楓論壇

標題: [C#] 登錄檔的增、刪、讀、寫操作 [打印本頁]

作者: whitefox    時間: 2023-5-31 14:19
標題: [C#] 登錄檔的增、刪、讀、寫操作
本帖最後由 whitefox 於 2023-6-1 10:24 編輯

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

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

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

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

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





歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓