用visual c#来删除注册表中的注册信息_c#应用

2008-02-23 05:46:38来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在《用Visual C#读取注册信息》的文中,已介绍了用 Visual C#来读取注册表中的注册信息。本文就来介绍用Visual C#对注册表的另外一个操作,这也是个具备破坏性的操作过程--删除注册信息。

在上文中已知道,由于Visual C#本身没有带类库,他对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现的。这二个类就是Registry类、RegistryKey类。在RegistryKey类中定义了三个方法来删除注册表中的注册信息。他们分别是:DeleteSubKey ( )方法、DeleteSubKeyTree ( )方法、DeleteValue ( )方法。下面就具体介绍一下在Visual C#中如何正确使用这三个方法。

一.如何用Visual C#中调用这三个方法:
在介绍如何使用这三个方法之前,还需要重新介绍一下RegistryKey类中的一个方法--OpenSubKey ( )方法。在上一文中已介绍了,此方法是打开指定的子键。其实OpenSubKey( )方法有二种调用的方式:

I > .OpenSubKey ( string , subkey ) :这种调用方式是对于此子键只是进行读操作。
II > .OpenSubKey ( string subkey , Boolean writable ):当对子键使用写操作的时候要用此种调用方法。假如在对子键使用了写操作,但仍然使用第一种调用方法,在程式运行的时候会产生一个错误信息。

(1). DeleteSubKey ( )方法:
此方法是删除一个指定的子键,在使用此方法的时候,假如在此子键中还存在另外的子键,则会产生一个错误信息。在程式中调用此方法有二种原型,为:
I > . DeleteSubKey ( string , subkey ):这种调用方式就是直接删除指定的子键。

II > . DeleteSubKey ( string subkey , Boolean info ):其中的"string"是要删除的子键的名称,"Boolean"参数的意思是:假如值为"True",则在程式调用的时候,删除的子键不存在,则产生一个错误信息;假如值为"False",则在程式调用的时候,删除的子键不存在,也不产生错误信息,程式依然正确运行。所以在具体的程式设计过程中,我还是推荐使用第二种调用方法。

(2). DeleteSubKeyTree ( )方法:
此方法是完全删除指定的子键目录,即:删除该子键连同该子键以下的全部子键。由于此方法的破坏性是很强的,任何在使用的时候要很主要。在程式中调用此方法的原型就一种,为:

DeleteSubKeyTree ( string subkey ):其中"subkey"就是要完全删除的子键名称。

(3). DeleteValue ( )方法:
此方法是删除指定的键值。在程式中调用此方法的原型就一种,为:
DeleteValue ( string value ):其中"value"就是要删除的键值的名称。
在介绍完和删除注册表中注册信息有关方法后,将通过一个程式来说明他们在程式中具体用法。

二. 程式设计和运行环境连同要准备的工作:
I > .Windows2000服务器版

II > ..Net FrameWork SDK Beta 2版

III > .由于程式的功能是删除指定的主键、子键和键值,这就需要我们在注册表中先为配置好这些值的位置和名称。具体如下:
在HKEY_LOCAL_MACHINE主键下面的"SOFTWARE"子键中建立如下子键和键值:
在"SOFTWARE"子键下建立"aaa"子键。在"aaa"子键下面建立"bbb"子键和"ddd"子键。在"bbb"子键中建立名称为"ccc"的键值,键值的值为"ccc"。子"ddd"子键中建立子键"eee",并在此子键中建立一个"fff"键值,键值的值为"fff"。程式中要删除的键值是"ccc"键值,要删除的子键是"bbb",要完全删除的子键是"ddd"。具体设定如下图所示:

点击小图放大图01:为程式设定的注册表结构图

三. 程式设计的重要步骤:
程式设计的主要步骤就是如何删除键值、不包含任何子键的子键、包含子键的子键。下面就通过程式来具体说明:
(1).如何删除键值。在程式中要删除键值是"ccc"。以下就是程式中删除此键值的具体语句。
RegistryKey hklm = Registry.LocalMachine ;
RegistryKey software = hklm.OpenSubKey ( "SOFTWARE", true ) ;
//打开"SOFTWARE"子键
RegistryKey no1 = software.OpenSubKey ( "aaa", true ) ;
//打开"aaa"子键
RegistryKey no2 = no1.OpenSubKey ( "bbb" , true ) ;
//打开"bbb"子键
no2.DeleteValue( "ccc" ) ;
//删除名称为"ccc"的键值


(2).如何删除不包含任何子键的子键。在程式要删除的子键是"bbb"。以下就是删除此子键的具体程式代码:
RegistryKey hklm = Registry.LocalMachine ;
RegistryKey software = hklm.OpenSubKey ( "SOFTWARE", true ) ;
//打开"SOFTWARE"子键
RegistryKey no1 = software.OpenSubKey ( "aaa", true ) ;
//打开"aaa"子键
no1.DeleteSubKey ( "bbb", false );
//删除名称为"bbb"的子键


(3).如何删除包含子键的子键。在程式中要删除的此子键是"ddd"。以下就是删除此子键的具体程式代码:
RegistryKey hklm = Registry.LocalMachine ;
hklm.DeleteSubKey ( "aaa", false );
RegistryKey software = hklm.OpenSubKey ( "SOFTWARE", true ) ;
//打开"SOFTWARE"子键
RegistryKey no1 = software.OpenSubKey ( "aaa", true ) ;
//打开"aaa"子键
no1.DeleteSubKeyTree ( "ddd" );
//删除名称为"ddd"的子键


四. 本文中的程式源代码( reg.cs )连同运行界面:
reg.cs程式的主要功能就是删除注册表中的键值、不包含子键的子键和包含子键的子键。并且通过按钮"读取注册表",以列表的显示方法来及时了解删除的情况。下图就是程式运行后的界面:

点击小图放大图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
{
private System.ComponentModel.Container components ;
private ListBox listBox1 ;
private Button button1 ;
private Button button2 ;
private Button button3 ;
private Button button4 ;
public Form1 ( )

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 用visual c#获得电脑名称和ip地址_c#应用

下一篇: 用visual c#来增加数据记录(2)_c#应用