程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#對注冊表編程的支持

C#對注冊表編程的支持

編輯:關於C語言

注冊表基礎知識請參閱本站文章:注冊表學習教程

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

.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);

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved