用Visual C 來建立 修改登錄檔資訊

2021-04-12 20:23:47 字數 4437 閱讀 4031

在《如何讀取註冊資訊》和《用visual c#來刪除登錄檔中的註冊資訊》文章中,已經**了用visual c#來讀取、刪除登錄檔中的註冊資訊,在本篇文章中我們就來介紹visual c#登錄檔程式設計的另外二個重要的操作:建立註冊資訊和修改註冊資訊。

在上二篇文章中,我們已經知道,由於visual c#本身沒有類庫,他是通過.net框架中的.net framework sdk(軟體開發包)定義的一些類來實現對登錄檔的操作。這就是命名空間microsoft.win32中封裝的二個類:registry類、registrykey類。在registrykey類中定義了二個方法用來建立登錄檔中的主鍵、子鍵和鍵值。他們是createsubvalue ( )方法和setvalue ( )方法。那麼如何用visual c#來修改註冊資訊,在本文中,我們只是介紹了修改登錄檔中的鍵值的方法。而對於主鍵和子鍵,由於.net framework sdk中還沒有定義這方面的方法,所以還無法完成安全的修改登錄檔中的資訊。下面就先介紹如何用visual c#來建立註冊資訊。

一.visual c#建立和修改註冊資訊要呼叫的二個方法:

(1).createsubkey ( string key )方法:此方法是建立以後面的字串為名稱的子鍵。當然這種方法不僅能夠建立子鍵,在下面介紹的程式中,也通過此種方法來建立乙個主鍵。

(2).setvalue ( string name , string keyvalue )方法:此方法的作用有二點,一種可以用來重新命名鍵值的數值,一種可以用來建立新的鍵值。具體情況如下:當開啟的子鍵中,如果存在此鍵值,就把新值賦給他,實現重新命名操作。如果不存在,則建立乙個新的鍵值。

二.程式設計和執行環境以及要準備的工作:

i>視窗系統2000伺服器版

ii>.net framework sdk beta 2版

iii>由於在程式中,要修改乙個已經存在的鍵值,所以就要預先設定好鍵值所在的位置。開啟登錄檔的編輯器,在"hkey_local_machine"主鍵下面的"hardware"子鍵下面建立"aaa"子鍵並在此子鍵下面建立乙個名稱為"bbb"的鍵值。具體如下圖所示:

圖01:為程式設定的登錄檔的結構圖示

三.程式的主要功能以及設計的重要步驟:

在下面介紹的程式中,主要的功能是用visual c#在登錄檔中建立乙個主鍵、乙個子鍵和修改乙個指定的鍵值。其中要建立的子鍵的結構層次是在主鍵"hkey_local_machin"下面的"hareware"主鍵下,名稱為"ddd",其中包含乙個鍵值,名稱為"www",鍵值的值為"1234"。

其中的要建立的主鍵的結構層次也是在主鍵"hkey_local_machin"下面的"hareware"主鍵下,名稱為"main",在此主鍵下面包含乙個名稱為"sub"的子鍵和名稱為"value"鍵值,鍵值的值為"1234"。下面就來著重介紹visual c#是如何建立和修改這些主鍵、子鍵和鍵值的。

(1).如何建立乙個子鍵,在程式中是結合createsubkey ( )方法和setvalue ( )方法來實現的,以下是程式中建立子鍵的源程式:

listbox1.items.clear ( ) ;

registrykey hklm = registry.localmachine ;

registrykey software = hklm.opensubkey ( "hardware" , true ) ;

registrykey main1 = software.createsubkey ( "main" ) ;

registrykey ddd = main1.createsubkey ( "sub" ) ;

ddd.setvalue ( "value" , "1234" );

(2).如何建立乙個主鍵,建立乙個主鍵和建立乙個子鍵的過程大致是差不多的。由於主鍵包含若干子鍵,所以在建立主鍵的時候必須注意他們的層次關係。下面這一段程式,在參考的時候,請注意一下main鍵和sub鍵之間的關係。

listbox1.items.clear ( ) ;

registrykey hklm = registry.localmachine ;

registrykey software = hklm.opensubkey ( "hardware", true ) ;

registrykey main1 = software.createsubkey ( "main" ) ;

registrykey ddd = main1.createsubkey ( "sub" ) ;

ddd.setvalue ( "value" , "1234" ) ;

(3).如何修改註冊資訊。由於登錄檔中的資訊十分重要,所以一般不要對其進行寫的操作。也可能是這個原因,在.net framework sdk 中並沒有提供修改登錄檔鍵的方法。而只是提供了乙個危害性相對較小的方法--setvalue ( ),通過這個方法,我們可以來修改鍵值。下面程式**是修改乙個指定鍵值名稱的鍵值。當然由於setvalue( )方法的特性,如果它檢測到這個鍵值不存在,就會建立乙個新的鍵值。

listbox1.items.clear ( ) ;

registrykey hklm = registry.localmachine ;

registrykey software = hklm.opensubkey ( "hardware", true ) ;

registrykey dddw = software.opensubkey ( "aaa" , true ) ;

dddw.setvalue ( "bbb" , "abcd" ) ;

圖02:本文中介紹的程式執行介面

reg.cs程式**如下:

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows.forms ;

using system.data ;

using microsoft.win32 ;

//匯入使用到的命名空間

public class form1 : form

//清除在程式中使用過的資源

public override void dispose ( )

//初始化程式中使用到的元件

private void initializecomponent ( )

{this.components = new system.componentmodel.container ( ) ;

this.button1 = new button ( ) ;

this.listbox1 = new listbox ( ) ;

button1.location = new system.drawing.point ( 16 , 320 ) ;

button1.size = new system.drawing.size ( 90 , 23 ) ;

button1.tabindex = 0 ;

button1.text = "讀取登錄檔" ;

button1.click += new system.eventhandler ( this.button1_click ) ;

this.button2 = new button ( ) ;

button2.location = new system.drawing.point ( 116 , 320 ) ;

button2.size = new system.drawing.size ( 90 , 23 ) ;

button2.tabindex = 1 ;

button2.text = "建立子鍵" ;

button2.click += new system.eventhandler ( this.button2_click ) ;

this.button3 = new button ( ) ;

button3.location = new system.drawing.point ( 216 , 320 ) ;

button3.size = new system.drawing.size ( 90 , 23 ) ;

button3.tabindex = 2 ;

button3.text = "建立主鍵" ;

button3.click += new system.eventhandler ( this.button3_click ) ;

this.button4 = new button ( ) ;

button4.location = new system.drawing.point ( 316 , 320 ) ;

button4.size = new system.drawing.size ( 90 , 23 ) ;

button4.tabindex = 3 ;

button4.text = "重新命名鍵值" ;

button4.click += new system.eventhandler ( this.button4_click ) ;

如何用Visual C 來建立 修改註冊資訊

如何用visual c 來建立 修改註冊資訊 王天 2002年01月08日 20 08 在 如何讀取註冊資訊 和 用visual c 來刪除登錄檔中的註冊資訊 文章中,已經 了用visual c 來讀取 刪除登錄檔中的註冊資訊,在本篇文章中我們就來介紹visual c 登錄檔程式設計的另外二個重要的...

如何用Visual C 來建立 修改註冊資訊

如何用visual c 來建立 修改註冊資訊 王天 2002年01月08日 20 08 在 如何讀取註冊資訊 和 用visual c 來刪除登錄檔中的註冊資訊 文章中,已經 了用visual c 來讀取 刪除登錄檔中的註冊資訊,在本篇文章中我們就來介紹visual c 登錄檔程式設計的另外二個重要的...

轉貼 Visual C 建立和修改註冊資訊

如何用visual c 來建立 修改註冊資訊 王天 2002年01月08日 20 08 在 如何讀取註冊資訊 和 用visual c 來刪除登錄檔中的註冊資訊 文章中,已經 了用visual c 來讀取 刪除登錄檔中的註冊資訊,在本篇文章中我們就來介紹visual c 登錄檔程式設計的另外二個重要的...