C#對註冊表編程的支持

 

Windows操作系統的註冊表中包含了有關計算機運行方式的配置信息,其中包括Windows操作系統配置信息、應用程序配置信息、專用用戶設置配置信息、環境配置信息等。另外,在WindowsNT和Windows2000操作系統中,註冊表中還包含了安全性、網絡管理等配置信息。

在應用程序安裝時,常常需要利用註冊表來登記應用程序的名字、運行路徑、用戶對應用程序的配置信息等。許多應用程序在運行時也常常需要訪問註冊表。

.Net框架結構在Microsoft.Win32名字空間內提供了兩個類用於註冊表操作:

Registry和RegistryKey。這兩個類都是密封類,不允許被其它類繼承。

Registry類中提供了7個公有的靜態域,分別代表Windows註冊表中的7個基本主鍵,它們是:

●Registry.ClassRoot,對應於HKEY_CLASSES_ROOT主鍵。

●Registry.CurrentUser,對應於HKEY_CURRENT_USER主鍵。

●Registry.LocalMachine,對應於HKEY_LOCAL_MACHINE主鍵。

●Registry.Users,對應於HKEY_USERS主鍵。

●Registry.CurrentConfig,對應於HKEY_CURRENT_CONFIG主鍵。

●Registry.DynDta,對應於HKEY_DYN_DATA主鍵。

●Registry.PerformanceData,對應於HKEY_PERFORMANCE_DATA主鍵。

RegistryKey類中封裝了對Windows註冊表的基本操作。對註冊表的操作必須符合系統提供的權限,否則不能完成指定的操作,程序將拋出一個異常。

創建子鍵

創建子鍵的成員方法的原型爲:

public RegistryKey CreateSubKey(string subkey);

其中,參數subkey表示要創建的子鍵的名字或子鍵的全路徑名。如果創建成功,返回值就是被創建的子鍵,否則爲null。

打開子鍵

打開子鍵的成員方法原型爲:

public RegistryKey OpenSubKey(string name);

public RegistryKey OpenSubKey(string name,bool writable);

name參數表示要打開的子鍵名稱或全路徑名,Writable參數表示被打開的主鍵是否可以被修改。

第一個方法對打開的子鍵默認是隻讀的,如果希望對打開的主鍵進行寫操作,使用第二個方法,並把writalbe參數值設爲true.

名字空間Microsoft.Win32中還爲我們提供了另一個方法,用於打開遠程機器上的註冊表進行操作。方法原型爲:

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

刪除子鍵

DeleteSubKey方法用於刪除指定的子鍵,方法原型爲:

public void DeleteSubKey(string subkey);

使用DeleteSubKey方法時,如果子鍵之中還包含子鍵,則刪除失敗,並返回一個異常。如果要徹底刪除子鍵目錄,即刪除子鍵以及子鍵以下的全部子鍵,可以使用DeleteSubKeyTree方法。該方法的原型爲:

public void DeleteSubKeyTree(string subkey);

讀取鍵值

讀鍵的方法原型爲:

public object GetValue(string name);

public object GetValue(string name,object defaultValue);

name參數表示鍵的名稱,返回類型是一個object類型。如果方法中指定的鍵不存在,則方法返回一個null。我們在使用GetValue方法時,可以不必關心該鍵的值類型究竟是字符串、二進制還是DWORD類型,只要使用正確的返回類型就可以了。比如,我們希望讀取一個字符串類型的鍵值,代碼就可以這樣寫:

string s_value=key.GetValue("Type");

其中key表示一個主鍵。

如果不確定鍵值是否存在,而又不希望得到一個null返回值,那就使用第二個方法GetValue(string name,object defaultValue),其中的參數defaultValue表示默認的返回值。如果讀取失敗,返回值就是傳遞給參數defaultValue的值。

設置鍵值

設置鍵值的方法原型爲:

public void SetValue(string name,object value);

同樣,我們在使用該方法修改鍵值時,不用費心去分辨究竟該傳遞哪種值類型,方法將會識別是哪種類型,並把相應類型的值賦予指定的鍵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章