倍可親

回復: 0
列印 上一主題 下一主題

C#中對註冊表的操作

[複製鏈接]

59

主題

145

帖子

99

積分

貝殼新手上路

留學博士后(十二級)

Rank: 2

積分
99
跳轉到指定樓層
樓主
強強 發表於 2005-9-11 21:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
C#中對註冊表的操作




  Windows 操作系統的註冊表包含了很多有關計算機運行的配置方式,打開註冊表我們可以看到註冊表是按類似於目錄的樹結構組織的,其中第二級目錄包含了五個預定義主鍵分別是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。

  下面我們來分別解釋這5個類的作用

  HKEY_CLASSES_ROOT該主鍵包含了文件的擴展名和應用程序的關聯信息以及Window Shell和OLE用於儲存註冊表的信息。該主鍵下的子鍵決定了在WINDOWS中如何顯示該類文件以及他們的圖標,該主鍵是從HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射過來的。

  HKEY_CURRENT_USER該主鍵包含了如用戶窗口信息,桌面設置等當前用戶的信息。

  HKEY_LOCAL_MACHINE主鍵包含了計算機軟體和硬體的安裝和配置信息,該信息可供所有用戶使用
  HKEY_USERS該主鍵記錄了當前用戶的設置信息,每次用戶登入系統時,就會在該主鍵下生成一個與用戶登入名一樣的子鍵,該子鍵保存了當前用戶的桌面設置、背景點陣圖、快捷鍵,字體等信息。一般應用程序不直接訪問改主鍵,而是通過主鍵HKEY_CURRENT_USER進行訪問。

  HKEY_CURRENT_CONFIG該主鍵保存了計算機當前硬體的配置信息,這些配置可以根據當前所連接的網路類型或硬體驅動軟體安裝的改變而改變。

  C#也支持對註冊表的編輯,.NET框架在Microsoft.Win32名字空間中提供了兩個類來操作註冊表:Registry和RegistryKey。這兩個類都是密封類不允許被繼承。下面我們分別來介紹這兩個類。

  Registry類提供了7個公共的靜態域,分別代表7個基本主鍵(其中兩個在XP系統中沒有,在這就不介紹了)分別是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它們分別對應哪幾個鍵我想各位一看就會知道吧。

  RegistryKey類中提供了對註冊表操作的方法。要注意的是操作註冊表必須符合系統許可權,否則將會拋出錯誤。

  下面我們就來幾個操作註冊表常用的幾個方法

  創建子鍵的方法原型為:




  public RegistryKey CreateSubKey(string sunbkey);



  參數sunbkey表示要創建的子鍵的名稱或路徑名。創建成功返回被創建的子鍵,否則返回null。

  打開子鍵的方法原型為:


  public RegistryKey OpenSubKey(string name);
  public RegistryKey OpenSubKey(string name,bool writable);


  參數name表示要打開的子鍵名或其路徑名,參數writable表示被打開的子鍵是否允許被修改,第一個方法打開的子鍵是只讀的。Microsoft.Win32類還為我們提供了另一個方法,用於打開遠程計算機上的註冊表,方法原型為:


  public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey,string machineName);


  刪除子鍵的方法原型為:


  public void DeleteKey(string subkey);


  該方法用於刪除指定的主鍵。如果要刪除的子鍵還包含主鍵則刪除失敗,並返回一個異常,如果要徹底刪除該子鍵極其目錄下的子鍵可以用方法DeleteSubKeyTree,該方法原型如下:


  public void DeleteKeyTree(string subkey);


  讀取鍵值的方法原型如下:


  public object GetValue(string name);
  public object GetValue(string name,object defaultValue);


  參數name表示鍵的名稱,返回類型是一個object類型,如果指定的鍵不存在則返回null。如果失敗又不希望返回的值是null則可以指定參數defaultValue,指定了參數則在讀取失敗的情況下返回該參數指定的值。

  設置鍵值的方法原型如下:


  public object SetValue(string name,object value);
「緣」由「願」起,「願」隨「緣」生,有個心愿與你結緣,在茫茫人海中,彼此能夠相識,既是緣,且他又來源於願,其是何等難能可貴,願你我有緣且有願!隨緣隨願! 朋友是我一生最大的財富,我珍惜身邊的每一位朋友。我會陪你哭陪你笑陪你度過每一個美好的明天,記得我是你的朋友!!
您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2024-6-7 10:39

快速回復 返回頂部 返回列表