C#中對註冊表的操作
來源:互聯網
上載者:User
註冊表 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);
哇吃飯的時間到了等下再來繼續寫樣本。