轉 C 中對登錄檔的操作

2021-04-14 01:34:25 字數 3887 閱讀 5657

c#中對登錄檔的操作

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該主鍵儲存了計算機當前硬體的配置資訊,這些配置可以根據當前所連線的網路型別或硬體驅動軟體安裝的改變而改變。

1. c#也支援對登錄檔的編輯,.net框架在microsoft.win32名字空間中提供了兩個類來操作登錄檔:registry和registrykey。這兩個類都是密封類不允許被繼承。下面我們分別來介紹這兩個類。

registry類提供了7個公共的靜態域,分別代表7個基本主鍵(其中兩個在xp系統中沒有,在這就不介紹了)分別是:registry.classesroot,registry.currentuser,registry.localmachine,registry.users,registry.currentconfig。它們分別對應哪幾個鍵我想各位一看就會知道吧。

registrykey類中提供了對登錄檔操作的方法。要注意的是操作登錄檔必須符合系統許可權,否則將會丟擲錯誤。

下面是操作登錄檔常用的幾個方法

--1.建立子鍵的方法原型為:

public registrykey createsubkey(string sunbkey);

引數sunbkey表示要建立的子鍵的名稱或路徑名。建立成功返回被建立的子鍵,否則返回null。

--2.開啟子鍵的方法原型為:

public registrykey opensubkey(string name);

public registrykey opensubkey(string name,bool writable);

引數name表示要開啟的子鍵名或其路徑名,引數writable表示被開啟的子鍵是否允許被修改,第乙個方法開啟的子鍵是唯讀的。microsoft.win32類還為我們提供了另乙個方法,用於開啟遠端計算機上的登錄檔,方法原型為:

public static registrykey openremotebasekey(registryhive hkey,string machinename);

--3.刪除子鍵的方法原型為:

public void deletekey(string subkey);

該方法用於刪除指定的主鍵。如果要刪除的子鍵還包含主鍵則刪除失敗,並返回乙個異常,如果要徹底刪除該子鍵極其目錄下的子鍵可以用方法deletesubkeytree,該方法原型如下:

public void deletekeytree(string subkey);

--4.讀取鍵值的方法原型如下:

public object getvalue(string name);

public object getvalue(string name,object defaultvalue);

引數name表示鍵的名稱,返回型別是乙個object型別,如果指定的鍵不存在則返回null。如果失敗又不希望返回的值是null則可以指定引數defaultvalue,指定了引數則在讀取失敗的情況下返回該引數指定的值。

--5.設定鍵值的方法原型如下:

public object setvalue(string name,object value);

2.以下從『讀』『寫』『刪除』『判斷』四個事例實現對登錄檔的簡單操作

--1.讀取指定名稱的登錄檔的值

private

string

getregistdata(

string

name)  

以上是讀取的登錄檔中hkey_local_machine/software目錄下的***目錄中名稱為name的登錄檔值;

--2.向登錄檔中寫資料

private

void

wtregedit(

string

name,

string

tovalue)  

以上是在登錄檔中hkey_local_machine/software目錄下新建***目錄並在此目錄下建立名稱為name值為tovalue的登錄檔項;

--3.刪除登錄檔中指定的登錄檔項

private

void

deleteregist(

string

name)  } 

以上是在登錄檔中hkey_local_machine/software目錄下***目錄中刪除名稱為name登錄檔項;

--4.判斷指定登錄檔項是否存在

private

bool

isregeditexit(

string

name)  } 

return

_exit; } 

以上是在登錄檔中hkey_local_machine/software目錄下***目錄中判斷名稱為name登錄檔項是否存在,這一方法在刪除登錄檔時判斷是否已經存在,在新建一登錄檔項時也應有相應判斷; 

下面的例子提供了在c#裡操作登錄檔的方法:

using

microsoft.win32;

using

system.diagnostics;

private

void

access_registry()

訪問系統登錄檔獲取odbc資料服務列表

//定義登錄檔子path

string

strregpath =@"

softwareodbcodbc.iniodbc data sources";

//建立兩個registrykey類,乙個將指向root path,另乙個將指向子path

registrykey regrootkey;

registrykey regsubkey;

//定義root指向登錄檔hkey_local_machine節點

regrootkey 

=registry.localmachine;

regsubkey 

=regrootkey.opensubkey(strregpath);

string

strdsnlist 

=regsubkey.getvaluenames();

//關閉

regsubkey.close();

regrootkey.close();    

本文來自: http://bbs.nou.com.cn/thread-124540-1-1.html及http://blog.zjol.com.cn/html/15/173915-138604.html及http://www.builder.com.cn/2007/0927/527087.shtml及http://www.host01.com/article/net/00020007/20060917184000172.htm

C 中對登錄檔的操作

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

C 中對登錄檔的操作

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

C 中對登錄檔的操作

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