程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 用Visual C#來創建修改注冊信息

用Visual C#來創建修改注冊信息

編輯: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"的鍵值。



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

在下面介紹的程序中,主要的功能是用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" ) ; 



四.本文中源程序代碼( reg.cs ) 

     

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

{

private System.ComponentModel.Container components ;

private ListBox listBox1 ;

private Button button1 ;

private Button button2 ;

private Button button3 ;

private Button button4 ;



public Form1 ( )

{

InitializeComponent ( ) ;

}

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

public override void Dispose ( )

{

base.Dispose ( ) ;

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



listBox1.Location = new System.Drawing.Point ( 16 , 32 ) ;

listBox1.Size = new System.Drawing.Size ( 496 , 264 ) ;

listBox1.TabIndex = 4 ;

this.Text = "用Visual C#來創建和修改注冊表中的注冊信息!" ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;

this.ClientSize = new System.Drawing.Size ( 528 , 357 ) ;

//在窗體中加入組件

this.Controls.Add ( this.listBox1 ) ;

this.Controls.Add ( this.button1 ) ;

this.Controls.Add ( this.button2 ) ;

this.Controls.Add ( this.button3 ) ;

this.Controls.Add ( this.button4 ) ;

}

//以列表形式顯示"HARDWARE"下面一層的子鍵和鍵值

protected void button1_Click ( object sender , System.EventArgs e )

{

listBox1.Items.Clear ( ) ;

RegistryKey hklm = Registry.LocalMachine ;

RegistryKey software = hklm.OpenSubKey ( "HARDWARE" ) ;

//打開"SYSTEM"子鍵

foreach ( string site in software.GetSubKeyNames ( ) )

//開始遍歷由子鍵名稱組成的字符串數組

{

listBox1.Items.Add ( site ) ;

//在列表中加入子鍵名稱

RegistryKey sitekey = software.OpenSubKey ( site ) ;

//打開此子鍵

foreach ( string sValName in sitekey.GetValueNames ( ) )

//開始遍歷由指定子鍵擁有的鍵值名稱組成的字符串數組

{

listBox1.Items.Add ( " " + sValName + ": " + sitekey.GetValue ( sValName ) ) ;

//在列表中加入鍵名稱和對應的鍵值

}

}

}

//創建子鍵和鍵值

protected void button2_Click ( object sender , System.EventArgs e )

{

listBox1.Items.Clear ( ) ;

RegistryKey hklm = Registry.LocalMachine ;

RegistryKey software = hklm.OpenSubKey ( "HARDWARE", true ) ;

RegistryKey ddd = software.CreateSubKey ( "ddd" ) ;

ddd.SetValue ( "www" , "1234" );

}

//創建一個主鍵並創建一個鍵值

protected void button3_Click ( object sender , System.EventArgs e )

{

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

}

//重命名一個存在的鍵值

protected void button4_Click ( object sender , System.EventArgs e )

{

listBox1.Items.Clear ( ) ;

RegistryKey hklm = Registry.LocalMachine ;

RegistryKey software = hklm.OpenSubKey ( "HARDWARE", true ) ;

RegistryKey dddw = software.OpenSubKey ( "aaa" , true ) ;

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

}

public static void Main ( )

{

Application.Run ( new Form1 ( ) ) ;

}

}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved