一.Visual C#創建和修改注冊信息要調用的二個方法:
(1).CreateSubKey ( String key )方法:此方法是創建以後面的字符串為名稱的子鍵。當然這種方法不僅能夠創建子鍵,在下面介紹的程序中,也通過此種方法來創建一個主鍵。
(2).SetValue ( String name , String keyvalue )方法:此方法的作用有二點,一種可以用來重命名鍵值的數值,一種可以用來創建新的鍵值。具體情況如下:當打開的子鍵中,如果存在此鍵值,就把新值賦給他,實現重命名操作。如果不存在,則創建一個新的鍵值。
二.程序設計和運行環境以及要准備的工作:
I>視窗系統2000服務器版
II>.Net FrameWork SDK Beta 2版
三.程序的主要功能以及設計的重要步驟:
在下面介紹的程序中,主要的功能是用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" ) ;
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程序代碼如下:
1
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());
}
}