`
isiqi
  • 浏览: 16484493 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

用Visual C#来删除注册表中的注册信息

阅读更多

在《用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 > .视窗系统2000服务器版

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"。以下就是程序中删除此键值的具体语句。

1RegistryKey hklm =Registry.LocalMachine ;
2RegistryKey software =hklm.OpenSubKey ( "SOFTWARE", true) ;
3//打开"SOFTWARE"子键
4RegistryKey no1 =software.OpenSubKey ( "aaa", true) ;
5//打开"aaa"子键
6RegistryKey no2 =no1.OpenSubKey ( "bbb", true) ;
7//打开"bbb"子键
8no2.DeleteValue( "ccc") ;
9//删除名称为"ccc"的键值


(2).如何删除不包含任何子键的子键。在程序要删除的子键是"bbb"。以下就是删除此子键的具体程序代码:

1RegistryKey hklm =Registry.LocalMachine ;
2RegistryKey software =hklm.OpenSubKey ( "SOFTWARE", true) ;
3//打开"SOFTWARE"子键
4RegistryKey no1 =software.OpenSubKey ( "aaa", true) ;
5//打开"aaa"子键
6no1.DeleteSubKey ( "bbb", false);
7//删除名称为"bbb"的子键


(3).如何删除包含子键的子键。在程序中要删除的此子键是"ddd"。以下就是删除此子键的具体程序代码:

1RegistryKey hklm =Registry.LocalMachine ;
2hklm.DeleteSubKey ( "aaa", false);
3RegistryKey software =hklm.OpenSubKey ( "SOFTWARE", true) ;
4//打开"SOFTWARE"子键
5RegistryKey no1 =software.OpenSubKey ( "aaa", true) ;
6//打开"aaa"子键
7no1.DeleteSubKeyTree ( "ddd");
8//删除名称为"ddd"的子键

四. 本文中的程序源代码( reg.cs )以及运行界面:

reg.cs程序的主要功能就是删除注册表中的键值、不包含子键的子键和包含子键的子键。并且通过按钮"读取注册表",以列表的显示方法来及时了解删除的情况。

reg.cs程序源代码如下:

1usingSystem;
2usingSystem.Drawing;
3usingSystem.Collections;
4usingSystem.ComponentModel;
5usingSystem.Windows.Forms;
6usingSystem.Data;
7usingMicrosoft.Win32;
8publicclassForm1 : Form
9{
10privateSystem.ComponentModel.Container components;
11privateListBox listBox1;
12privateButton button1;
13privateButton button2;
14privateButton button3;
15privateButton button4;
16publicForm1()
17{
18InitializeComponent();
19}

20//清除在程序中使用过的资源
21publicoverridevoidDispose()
22{
23base.Dispose();
24components.Dispose();
25}

26//初始化程序中使用到的组件
27privatevoidInitializeComponent()
28{
29components =newSystem.ComponentModel.Container();
30button1 =newButton();
31button2 =newButton();
32button3 =newButton();
33button4 =newButton();
34listBox1 =newListBox();
35
36button1.Location =newSystem.Drawing.Point(16, 320);
37button1.Size =newSystem.Drawing.Size(75, 23);
38button1.TabIndex =0;
39button1.Text ="读取注册表";
40button1.Click +=newSystem.EventHandler(button1_Click);
41
42button2.Location =newSystem.Drawing.Point(116, 320);
43button2.Size =newSystem.Drawing.Size(75, 23);
44button2.TabIndex =0;
45button2.Text ="删除键值ccc";
46button2.Click +=newSystem.EventHandler(button2_Click);
47
48button3.Location =newSystem.Drawing.Point(216, 320);
49button3.Size =newSystem.Drawing.Size(75, 23);
50button3.TabIndex =0;
51button3.Text ="删除子键bbb";
52button3.Click +=newSystem.EventHandler(button3_Click);
53
54button4.Location =newSystem.Drawing.Point(316, 320);
55button4.Size =newSystem.Drawing.Size(75, 23);
56button4.TabIndex =0;
57button4.Text ="删除主键ddd";
58button4.Click +=newSystem.EventHandler(button4_Click);
59
60listBox1.Location =newSystem.Drawing.Point(16, 32);
61listBox1.Size =newSystem.Drawing.Size(496, 264);
62listBox1.TabIndex =1;
63
64this.Text ="用Visual C#来删除注册表中的主键、子键和键值!";
65this.AutoScaleBaseSize =newSystem.Drawing.Size(5, 13);
66this.ClientSize =newSystem.Drawing.Size(528, 357);
67this.Controls.Add(listBox1);
68this.Controls.Add(button1);
69this.Controls.Add(button2);
70this.Controls.Add(button3);
71this.Controls.Add(button4);
72}

73protectedvoidbutton1_Click(objectsender, System.EventArgs e)
74{
75listBox1.Items.Clear();
76RegistryKey hklm =Registry.LocalMachine;
77RegistryKey software =hklm.OpenSubKey("SOFTWARE");
78//打开"SOFTWARE"子键
79RegistryKey no1 =software.OpenSubKey("aaa");
80//打开"aaa"子键
81foreach(stringsite inno1.GetSubKeyNames())
82//开始遍历由子键名称组成的字符串数组
83{
84listBox1.Items.Add(site);
85//在列表中加入子键名称
86RegistryKey sitekey =no1.OpenSubKey(site);
87//打开此子键
88foreach(stringsValName insitekey.GetValueNames())
89//开始遍历由指定子键拥有的键值名称组成的字符串数组
90{
91listBox1.Items.Add(""+sValName +": "+sitekey.GetValue(sValName));
92//在列表中加入键名称和对应的键值
93}

94}

95}

96protectedvoidbutton2_Click(objectsender, System.EventArgs e)
97{
98RegistryKey hklm =Registry.LocalMachine;
99RegistryKey software =hklm.OpenSubKey("SOFTWARE", true);
100//打开"SOFTWARE"子键
101RegistryKey no1 =software.OpenSubKey("aaa", true);
102//打开"aaa"子键
103RegistryKey no2 =no1.OpenSubKey("bbb", true);
104//打开"bbb"子键
105no2.DeleteValue("ccc");
106//删除名称为"ccc"的键值
107}

108protectedvoidbutton3_Click(objectsender, System.EventArgs e)
109{
110RegistryKey hklm =Registry.LocalMachine;
111RegistryKey software =hklm.OpenSubKey("SOFTWARE", true);
112//打开"SOFTWARE"子键
113RegistryKey no1 =software.OpenSubKey("aaa", true);
114//打开"aaa"子键
115no1.DeleteSubKey("bbb", false);
116//删除名称为"bbb"的子键
117}

118protectedvoidbutton4_Click(objectsender, System.EventArgs e)
119{
120RegistryKey hklm =Registry.LocalMachine;
121hklm.DeleteSubKey("aaa", false);
122RegistryKey software =hklm.OpenSubKey("SOFTWARE", true);
123//打开"SOFTWARE"子键
124RegistryKey no1 =software.OpenSubKey("aaa", true);
125//打开"aaa"子键
126no1.DeleteSubKeyTree("ddd");
127//删除名称为"ddd"的子键
128}

129publicstaticvoidMain()
130{
131Application.Run(c
分享到:
评论

相关推荐

    VisualAssist 注册表清理助手

    总的来说,"VisualAssist 注册表清理助手"是一个方便的工具,用于解决因VisualAssist使用而产生的注册表混乱问题,特别是对于需要重装或升级VisualAssist的开发者来说,它能确保系统环境的清洁,从而保证新安装的...

    C#最常用技术文档:如何用Visual C#来创建、修改注册信息String类使用

    首先,关于在C#中创建和修改注册信息,Windows操作系统使用注册表存储系统和应用程序配置信息。在C#中,我们可以使用`Microsoft.Win32.Registry`命名空间下的类来操作注册表。例如,`RegistryKey`类可以用来打开、...

    c#做的小小的修改注册表的应用程序

    标题中的“c#做的小小的修改注册表的应用程序”表明这是一个使用C#编程语言开发的软件,它的主要功能是操作和修改计算机的注册表。在Windows操作系统中,注册表是一个存储系统设置、应用程序配置和用户信息的重要...

    C# WinForm 注册表浏览器

    开发者可能使用了Visual Studio IDE中的WinForm设计器来构建UI,包括控件的布局、事件处理等功能。`AssemblyInfo.cs` 文件包含了程序集的元数据,如版本信息、版权等,这些都是.NET框架的一部分。 `regViewer....

    VisualC#中如何删除注册表中的注册信息,内有源程序代码,VB.net原理基本相同.

    Visual C#提供了方便的API接口,让我们能够轻松地读取、写入以及删除注册表中的信息。这里我们将深入探讨如何在Visual C#中进行这一操作,并理解与VB.NET相似的基本原理。 首先,要操作注册表,我们需要引入`...

    如何删除注册表中的注册信息,word版教材

    在实际应用中,这些操作通常通过编程语言(如C++, C#, Visual Basic等)来实现,使用Windows API函数。以下是一个简单的C++示例,演示了如何使用这些函数: ```cpp #include #include void DeleteRegistryKey...

    C#程序的注册表操作

    ### C#程序中的注册表操作 #### 一、概述 在C#开发环境下,尤其是在Visual Studio平台上编写WinForm应用程序时,经常会涉及到与Windows系统注册表的交互。注册表是Windows操作系统的核心组件之一,用于存储系统...

    Microsoft Visual C# 2008从入门到精通

    《Visual C# 2008从入门到精通》同时还介绍了大量Visual C# 2008的开发经验,对使用中的重点、难点进行了专门的讲解,是一本有效、实用的从入门到精通级的学习指南。  透过本书,读者可在专家的悉心指导下学习并...

    Visual C# 2005 编程实例精粹

    这可能包括文件和目录的操作(如读写、复制、删除),注册表的访问,系统信息的获取,以及进程和线程的管理。开发者将学习如何编写脚本来自动化一些日常的系统维护任务,如清理临时文件、监控系统性能等。 3、**GDI...

    Visual C# .NET精彩编程实例集锦

    实例81 如何浏览注册表信息 实例82 如何隐藏系统驱动器 实例83 如何清理系统回收站 实例84 如何制作日志查看器 实例85 如何禁止关闭操作系统 实例86 如何禁止屏幕保护程序 实例87 如何禁止系统菜单按钮命令 第5章 ...

    Visual C# 2010程序设计教程PPT

    Visual C# 2010程序设计教程PPT " 第1章 NET平台与Visual Studio 2010开发工具 " " .NET平台的概念及理解 " .NET平台的架构 命名空间的概念及使用 Visual Studio 2010开发工具的使用 使用Visual ...

    Visual C# 轻松入门全攻略

    《Visual C# 轻松入门全攻略》涵盖了C#编程的基础到高级概念,是初学者进入.NET开发领域的理想指南。下面将详细讲解每个部分的关键知识点。 (一)C#的变量、表达式和基本结构 C#是强类型语言,变量在声明时必须...

    Visual C# 2008程序设计经典案例设计与实现

    第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 案例4 闪烁动画窗体 案例5 滚动字幕动画窗体 案例6 超女卡通窗体 案例7 总在最前的登录窗体 案例8 ...

    Visual+C#+2008程序设计经典案例设计与实现.rar

    Visual+C#+2008程序设计经典案例设计与实现 第1章 Visual C#2008与窗体界面 案例1 飘动动画窗体 案例2 透明动画窗体 案例3 利用API函数实现动画窗体 案例4 闪烁动画窗体 案例5 滚动字幕动画窗体 案例6 超女卡通...

    c# IE中的注册表

    根据给定的信息,我们可以从标题、描述以及部分代码中提炼出与C#编程语言和Internet Explorer(IE)浏览器注册表操作相关的知识点。 ### C#在IE中的注册表操作 #### 1. 注册表基本概念 注册表是Windows操作系统的...

    C#2005 winform操作注册表源码,处理安装sql挂起问题

    这是一个针对初学者或有一定C#基础的开发者提供的解决方案,它演示了如何使用C#编程语言在Visual Studio 2005环境下通过Winform界面来操作注册表,以解决SQL安装过程中可能出现的挂起问题。 首先,让我们深入理解...

    《Visual C# .NET精彩编程实例集锦》第4、5章

    在第4章“系统维护”中,读者将学习如何使用C#来实现一系列实用的系统管理工具和功能。这可能包括但不限于以下几个方面: 1. 文件和目录操作:如创建、删除、移动、复制文件和目录,以及进行文件的读写操作。 2. ...

    C#修改IE在注册表的安全项(vs2010源码)

    标题中的"C#修改IE在注册表的安全项"指的是使用C#编程语言来操作Windows操作系统中的注册表,以调整Internet Explorer(IE)浏览器的ActiveX控件安全设置。ActiveX是微软开发的一种技术,用于在网页上提供交互式内容...

    Trial-Reset,Visual Assist X卸载工具

    - 商业软件通常会将自己的试用信息写入注册表,以追踪用户的使用期限。Trial-Reset 可以定位并清除这些信息,实现试用期的重置。 - 清理注册表时需要谨慎,因为错误操作可能导致系统不稳定甚至崩溃。Trial-Reset ...

Global site tag (gtag.js) - Google Analytics