C 對登錄檔程式設計的支援

2021-05-26 14:50:31 字數 2324 閱讀 6929

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

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

C 中對登錄檔的操作 讀寫登錄檔方法

從登錄檔中讀資訊 要讀取的鍵值 讀到的鍵值字串,如果失敗 如登錄檔尚無資訊 則返回 private function readinfo byval p keyname as string dim softwarekey as registrykey registry.localmachine.ope...

C 對登錄檔刪除操作

最近需要開發乙個小工具,用於清除登錄檔中的一些註冊資訊,這裡的技術點有以下幾點 1 查詢登錄檔指定項資訊 根據給定的登錄檔項名稱,查詢項的資訊,如包含子項的數量。2 迴圈查詢子項 由於登錄檔中的子項名稱不知道,只能根據指定的項下面,迴圈取得子項,然後匹配子項中的特定的鍵和鍵值,從而確定子項。3 查詢...

C 中對登錄檔的操作

windows 作業系統的登錄檔包含了很多有關計算機執行的配置方式,開啟登錄檔我們可以看到登錄檔是按類似於目錄的樹結構組織的,其中第二級目錄包含了五個預定義主鍵分別是 hkey classes root,hkey current user,hkey local machine,hkey users,...