C 如何讀取登錄檔中的註冊資訊

2022-03-22 07:42:21 字數 3021 閱讀 5624

一.初步認識登錄檔:

單擊"開始/執行",在"開啟"的後面填入"regedit"。就可以看到登錄檔的資料結構了。如下圖。注:regedit檔案是微軟公司提供給使用者編輯登錄檔的乙個工具。

在登錄檔中稱為"主鍵",據圖可見,"主鍵"是有層次結構的。主鍵的下一級主鍵稱為該主鍵的"子鍵"。每乙個主鍵可以對擁有多個子鍵。如圖所示,右邊的這些值就是所謂的鍵值了。每乙個主鍵或者子鍵都可以擁有多個鍵值。登錄檔是乙個龐大的資料庫,在其中每乙個主鍵,每乙個鍵值都賦予了不同的功能。

二.visual c#如何讀取登錄檔中的主鍵和鍵值:

在.net framework sdk beta 2版中,有乙個microsoft.win32的命名空間,在此命名空間中提供了二個用於登錄檔操作的類:registry類、registrykey類。這二個類都是封閉類,不可以繼承。在這二個類,定義了許多關於登錄檔的方法和屬性,通過呼叫這二個類,在visual c#中就可以比較輕鬆的處理關於登錄檔的各種操作了。

(1).registry類:

此類主要封裝了七個公有的靜態域,而這些靜態域分別代表這視窗登錄檔中的七個基本的主鍵,具體如下所示:

registry.classesroot 對應於hkey_classes_root主鍵

registry.currentuser 對應於hkey_curren主鍵

registry.localmachine 對應於 hkey_local_machine主鍵

registry.user 對應於 hkey_user主鍵

registry.currentconfig 對應於heky_current_config主鍵

registry.dynda 對應於hkey_dyn_data主鍵

registry.performancedata 對應於hkey_performance_data主鍵

(2).registrykey類:

此類中主要封裝了對視窗系統登錄檔的基本操作。在程式設計中,首先通過registry類找到登錄檔中的基本主鍵,然後通過registrykey類,來找其下面的子鍵和處理具體的操作的。

三.通過乙個讀取登錄檔資訊例子來具體說明這二個來的用法:

(1).程式設計和執行的環境:

i視窗系統2000伺服器

ii net framework sdk beta 2版

(2)在執行程式前的一些必要的處理工作:

在程式設計時,主要功能是讀取已經存在的主鍵鍵值,使用者可以按照下圖所示的結構新建若干個主鍵和對應的鍵值:

這裡有必要說明的是圖上只顯示了"新項 #3"子鍵對應的鍵值。在"新項 #2"子鍵也有鍵值,對應的鍵值是:"新值#1"為"001","新值 #2"為"002"。在"新項 #1"子鍵中對應的鍵值是:"新值 #1"為"aaa","新值 #2"為"bbb"。

(3).程式的主要功能:

程式的主要功能是讀取指定主鍵下面的所有子鍵和子鍵擁有的鍵值,並以列表的形式按層次顯示出來:

(4).程式設計過程中的重要步驟以及應該注意的一些問題:

i 程式中讀取主鍵、子鍵和鍵值所使用到的方法:

程式中為了讀取指定主鍵下面的子鍵和子鍵中擁有的鍵值,主要使用了registrykey類中的四個方法:opensubkey,getsubkeynames,getvaluenames,getvalue。具體的用法和意思如下:

opensubkey ( string name )方法主要是開啟指定的子鍵。

getsubkeynames ( )方法是獲得主鍵下面的所有子鍵的名稱,它的返回值是乙個字串陣列。

getvaluenames ( )方法是獲得當前子鍵中的所有的鍵名稱,它的返回值也是乙個字串陣列。

getvalue ( string name )方法是指定鍵的鍵值。

程式中具體的使用語句如下:

registrykey hklm = registry.localmachine ;

//開啟"system"子鍵

registrykey software = hklm.opensubkey ( "system" ) ;

//開啟"001"子鍵

registrykey no1 = software.opensubkey ( "001" ) ;

//開啟"002"子鍵

registrykey no2 = no1.opensubkey ( "002" ) ;

其中listbox1是程式中定義了的列表名稱。

ii 如何用列表形式顯示註冊資訊:

由於getsubkeynames ( )方法和getvaluenames ( )方法的返回值是字串陣列,所以在程式中是通過foreach語句實現遍歷這些字串陣列的。並且在遍歷的時候,就通過列表形式顯示出來,程式中具體實現語句如下:

foreach ( string site in no2.getsubkeynames ( ) )

//開始遍歷由子鍵名稱組成的字串陣列 }

(5).源程式**:

通過以上的論述,我們可以得到程式的源程式**,具體如下:

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows

用visual c#來讀取登錄檔中的註冊資訊是通過命名空間micorsoft.win32中的二個類來實現的。在這二個類中還定義了對登錄檔資訊的刪除、修改和重新命名的一些方法。這些方法比起本文介紹的讀取方法、開啟方法來說,更具有破壞性,但也更實用。對應這些方法的介紹將在以後的文章中進行。

通過以上的介紹,我們發現用visual c#來處理登錄檔,其實是一件比較輕鬆而簡單的事情。事情雖然是輕鬆的,但我也要提醒各位,由於登錄檔在視窗系統中的重要作用,所以在每一次對登錄檔進行操作之前,一定要備份,在操作的時候也要非常小心,因為你的每一次的誤操作都可能導致你的系統崩潰。

C 讀取登錄檔資訊

登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統 上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱 瘓。所以...

C 讀取登錄檔資訊

登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱瘓。所以正確...

C 讀取Windows登錄檔資訊

登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱瘓。所以正確...