C 操作登錄檔

2021-06-26 00:25:39 字數 3486 閱讀 5072

用.net下託管語言c#操作登錄檔,主要內容包括:登錄檔項的建立,開啟與刪除、鍵值的建立(設定值、修改),讀取和刪除、判斷登錄檔項是否存在、判斷鍵值是否存在。 

準備工作:

1:要操作登錄檔,我們必須要引入必要的命名空間:

[c#]view plain

copy

using

microsoft.win32;  

在這個命名空間裡面包含了許多登錄檔相關的類,足夠我們使用了~~ 

2:命名空間裡面提供了乙個類:registrykey 利用它我們可以定位到登錄檔最開頭的分支:

classesroot,currentuser,users,localmachine,currentconfig 如:

[c#]view plain

copy

registrykey key = registry.localmachine;  

3:在操作的過程中涉及到子分支,要用createsubkey或opensubkey開啟; 

4:最後要呼叫registrykey物件的close()關閉,以便將對登錄檔的修改重新整理到磁碟。

一:登錄檔項的建立,開啟與刪除

1:建立: 建立登錄檔項主要用到registrykey 的createsubkey()方法。如:

[c#]view plain

copy

registrykey key = registry.localmachine;  

registrykey software = key.createsubkey(softwaretest);  

在hkey_local_machine/software下新建名為test的登錄檔項。如果已經存在則無影響! 

2:開啟: 開啟登錄檔項主要用到registrykey 的opensubkey()方法。如:

[c#]view plain

copy

registrykey key = registry.localmachine;  

registrykey software = key.opensubkey(softwaretest,true

);  

注意:該方法後面還可以有乙個布林型的引數,true表示可以寫入;如果該登錄檔項不存在,這呼叫這個方法會丟擲異常。 

3:刪除: 刪除登錄檔項主要用到registrykey 的deletesubkey()方法。如:

注意,如果該登錄檔項不存在,這呼叫這個方法會丟擲異常 

二:鍵值的建立(設定值、修改),讀取和刪除

1:建立(設定值、修改): 對鍵值的建立修改等操作主要用到registrykey 的setvalue()方法。

[c#]view plain

copy

registrykey key = registry.localmachine;  

registrykey software = key.opensubkey(softwaretest,true

); 該項必須已存在  

software.setvalue(test, 園);  

在hkey_local_machinesoftwaretest下建立乙個名為「test」,值為「園」的鍵值。如果該鍵值原本已經存在, 則會修改替換原來的鍵值,如果不存在則是建立該鍵值。

注意:setvalue()還有第三個引數,主要是用於設定鍵值的型別,如:字串,二進位制,dword等等~~預設是字串,如:

[c#]view plain

copy

software.setvalue(test, 0, registryvaluekind.dword);

// 二進位制資訊

ey.close();  

2:讀取: 對鍵值的讀取操作主要用到registrykey 的getvalue()方法。

[c#]view plain

copy

string

info = ;  

registrykey key;  

key = registry.localmachine;  

myreg = key.opensubkey(softwaretest);  

myreg = key.opensubkey(softwaretest,true

);  

info = myreg.getvalue(test).tostring();  

myreg.close();  

info結果為:園 

3:刪除: 對鍵值的刪除操作主要用到registrykey 的deletevalue()方法

registrykey delkey = registry.localmachine.opensubkey(

"software/test"

, true

);  

delkey.deletevalue(test);  

delkey.close();  

[c#]view plain

copy

registrykey delkey = registry.localmachine.opensubkey(softwaretest, 

true

);  

delkey.deletevalue(test);  

delkey.close();  

細心的讀者可能發現了第二個例子中opensubkey()方法引數與其他例子的不同。如果你要修改鍵值,包括建立、設定、刪除鍵值等都要在方法後面加個布林引數,設定為true,表示可寫可改;如果僅僅只是讀取鍵值可以不加,此時你不能再往裡寫值(當然,你要加也可以true)! 還有讀者提到讀寫預設鍵值的問題,主要在設定、讀取的方法中將鍵名置空則就是對預設鍵值的操作。如:

[c#]view plain

copy

software.setvalue(, 園);    

在hkey_local_machine/software/test中獲取』預設『 項的值,如果沒有則為「園」;另外,預設的鍵值是不能刪除的,所以不要用deletevalue()方法去刪除,會丟擲異常的! 

三:判斷登錄檔項是否存在

[c#]view plain

copy

private

bool

isregedititemexist()  

}  hkml.close();  

return

false

;  }  

四:判斷鍵值是否存在

c 操作登錄檔

1.讀取指定名稱的登錄檔的值 private string getregistdata string name 以上是讀取的登錄檔中hkey local machine software目錄下的 目錄中名稱為name的登錄檔值 2.向登錄檔中寫資料 private void wtregedit st...

C 登錄檔操作

寫這篇日誌以前不是沒有接觸過c 來操作登錄檔,但這次的體會更深入了一點,故筆記如下。首先可以從 登錄檔reg檔案語法規則 了解下.reg檔案的語法規則,因為很多時候是把.reg裡的 轉換為程式裡的啊。知道語法後,可以根據裡面的 開始逐個轉化為c 了。首先是建立hkey,呼叫regcreatekey或...

C 操作登錄檔

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