首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 登錄表程式設計完整指南:Registry 與 RegistryKey 類別詳解

     編輯:關於C語言

登錄表基礎知識

Windows 登錄表集中儲存系統設定、應用程式配置、使用者偏好、環境變數等關鍵資料。.NET 在 Microsoft.Win32 命名空間提供 Registry 與 RegistryKey 兩個密封類別,封裝底層 API,簡化讀寫操作。

Registry 七大根鍵對應

靜態屬性對應根鍵典型用途
Registry.ClassesRootHKEY_CLASSES_ROOT檔案關聯、COM 元件註冊
Registry.CurrentUserHKEY_CURRENT_USER當前使用者偏好設定
Registry.LocalMachineHKEY_LOCAL_MACHINE電腦層級軟體與硬體設定
Registry.UsersHKEY_USERS所有使用者配置檔
Registry.CurrentConfigHKEY_CURRENT_CONFIG硬體設定檔
Registry.DynDataHKEY_DYN_DATA動態硬體資訊(舊版)
Registry.PerformanceDataHKEY_PERFORMANCE_DATA效能計數器資料

RegistryKey 核心操作

建立子鍵

RegistryKey subKey = key.CreateSubKey(@"Software\MyApp\Settings");
// 成功回傳子鍵,失敗回傳 null

開啟子鍵


// 唯讀開啟
RegistryKey roKey = key.OpenSubKey(@"Software\MyApp");
// 可寫開啟
RegistryKey rwKey = key.OpenSubKey(@"Software\MyApp", true);

遠端登錄表存取


RegistryKey remoteKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "Server01");

刪除子鍵


// 僅刪除單一子鍵(必須為空)
key.DeleteSubKey("OldSettings");
// 遞迴刪除整棵子樹
key.DeleteSubKeyTree("ObsoleteSection");

讀取值


// 回傳 object,若不存在回傳 null
object val = key.GetValue("InstallPath");
// 指定預設值,避免 null
string path = (string)key.GetValue("InstallPath", @"C:\Default");

寫入值


// 自動推斷型別(字串、DWORD、二進位等)
key.SetValue("Version", "1.2.3");
key.SetValue("MaxConnections", 100);
key.SetValue("BinaryData", new byte[] { 0x01, 0x02 });

權限與例外處理

  • 寫入 LocalMachine 需系統管理員權限,否則拋出 SecurityException 或 UnauthorizedAccessException。
  • 建議以 try-catch 包裹所有登錄表操作,記錄錯誤並提供使用者友善提示。

最佳實踐

  1. 應用程式設定優先使用 CurrentUser,避免權限問題。
  2. 安裝程式才寫入 LocalMachine,並請求 UAC 提權。
  3. 讀取時善用預設值參數,增強容錯能力。
  4. 及時呼叫 Close() 或使用 using 區塊釋放控制代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved