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

C#操作注册表全攻略

阅读更多

       相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了。这东西对Windows系统来说可是比较重要的,也是病毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项里面写入自己的启动键值来达到自启动的目的,有些病毒还会修改注册表里面来映像劫持杀毒软件,这是破坏系统的第一步。同时,大多软件(软件的序列号和信息)和硬件信息、系统信息、安全模式等等设置都保存在这里,因此系统的健康在很大程度上要依赖注册表的健康。

       作为编程开发人员,我们有必要了解注册表并学会操作注册表。下面我们就来用.NET下托管语言C#操作注册表,主要内容包括:注册表项的创建,打开与删除、键值的创建(设置值、修改),读取和删除、判断注册表项是否存在、判断键值是否存在。

准备工作:

1:要操作注册表,我们必须要引入必要的命名空间:

using Microsoft.Win32;

 
在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~

2:命名空间里面提供了一个类:RegistryKey   利用它我们可以定位到注册表最开头的分支:

ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig

如:RegistryKey key = Registry.LocalMachine;

3:在操作的过程中涉及到子分支,要用\\进行深入,单个\会报错!

4:最后要调用RegistryKey对象的Close()关闭对注册表的修改~~~

5:以下我们的例子都是在LocalMachine分支下,请注意。



一:注册表项的创建,打开与删除

1:创建:

创建注册表项主要用到RegistryKey 的CreateSubKey()方法。如:

RegistryKey key = Registry.LocalMachine;

RegistryKey software = key.CreateSubKey("software\\test");  

//在HKEY_LOCAL_MACHINE\SOFTWARE下新建名为test的注册表项。如果已经存在则不影响!

 


2:打开:

打开注册表项主要用到RegistryKey 的OpenSubKey()方法。如:

RegistryKey key = Registry.LocalMachine;

RegistryKey software = key.OpenSubKey("software\\test",true);  

//注意该方法后面还可以有一个布尔型的参数,true表示可以写入。

 
注意,如果该注册表项不存在,这调用这个方法会抛出异常



3:删除:

删除注册表项主要用到RegistryKey 的DeleteSubKey()方法。如:

RegistryKey key = Registry.LocalMachine;

key.DeleteSubKey("software\\test",true);    //该方法无返回值,直接调用即可

key.Close();

 
注意,如果该注册表项不存在,这调用这个方法会抛出异常



二:键值的创建(设置值、修改),读取和删除

1:创建(设置值、修改):

对键值的创建修改等操作主要用到RegistryKey 的SetValue()方法

RegistryKey key = Registry.LocalMachine;

RegistryKey software = key.OpenSubKey("software\\test",true); //该项必须已存在

software.SetValue("test", "coolszy"); 

 //在HKEY_LOCAL_MACHINE\SOFTWARE\test下创建一个名为“test”,值为“coolszy”的键值。如果该键值原本已经存在,则会修改替换原来的键值,如果不存在则是创建该键值。

// 注意:SetValue()还有第三个参数,主要是用于设置键值的类型,如:字符串,二进制,Dword等等~~默认是字符串。如:

// software.SetValue("test", "0", RegistryValueKind.DWord); //二进制信息

Key.Close();



2:读取:

string info = "";

RegistryKey Key;

Key = Registry.LocalMachine;

myreg = Key.OpenSubKey("software\\test");  

// myreg = Key.OpenSubKey("software\\test",true);

info = myreg.GetValue("test").ToString();

myreg.Close();

 

info结果为:coolszy


3:删除:

RegistryKey delKey = Registry.LocalMachine.OpenSubKey("Software\\test", true);

delKey.DeleteValue("test");

delKey.Close();

 


细心的读者可能发现了第二个例子中OpenSubKey()方法参数与其他例子的不同。

如果你要修改键值,包括创建、设置、删除键值等都要在方法后面加个布尔参数,设置为true,表示可写可改;如果仅仅只是读取键值可以不加,此时可写关闭,你不能再往里写值(当然,你要加也可以true)!

还有读者提到读写默认键值的问题,主要在设置、读取的方法中将键名置空则就是对默认键值的操作。

如:

software.SetValue("", "coolszy"); //   在HKEY_LOCAL_MACHINE\SOFTWARE\test修改默认键值的值为“博coolszy”。读取类似!

另外,默认的键值是不能删除的,所以不要用DeleteValue()方法去删除,会抛出异常的!





三:判断注册表项是否存在

private bool IsRegeditItemExist()

{

    string[] subkeyNames;

    RegistryKey hkml = Registry.LocalMachine;

RegistryKey software = hkml.OpenSubKey("SOFTWARE");

//RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);

subkeyNames = software.GetSubKeyNames(); 

//取得该项下所有子项的名称的序列,并传递给预定的数组中

    foreach (string keyName in subkeyNames)   //遍历整个数组

    {

         if (keyName == "test") //判断子项的名称

         {             

             hkml.Close();

             return true;

          }

       }

         hkml.Close();

         return false;            

}

 


四:判断键值是否存在

private bool IsRegeditKeyExit()

{

    string[] subkeyNames;

    RegistryKey hkml = Registry.LocalMachine;

RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test");

    //RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test", true);

    subkeyNames = software.GetValueNames();

//取得该项下所有键值的名称的序列,并传递给预定的数组中

    foreach (string keyName in subkeyNames)

    {

         if (keyName == "test")   //判断键值的名称

         {

            hkml.Close();

            return true;

          }

    }

         hkml.Close();

         return false;

    }

 

       至此,C#操作注册表就到此为止了。本文几乎囊括了C#语言对注册表的所有操作,只要认真看完此文,认真时间就肯定对注册表的读取修改游刃有余了。

注:本文所有例子在VS2008+WinXP下调试通过…

分享到:
评论

相关推荐

    C#操作注册表信息

    本文将深入探讨如何使用C#来操作注册表,实现对注册表的增删改查功能。注册表是Windows操作系统中存储系统和应用程序配置信息的重要数据库,理解如何通过编程方式与之交互对于系统级开发至关重要。 首先,要进行...

    C#注册表操作类(完整版))

    在本段内容中,主要介绍了C#中注册表操作类的基础知识,包括注册表基项的定义和注册表数据类型的分类。这些知识点是进行C#编程时,尤其是进行系统配置和管理时的重要组成部分。 注册表是Windows操作系统中的一个...

    C#操作注册表类

    利用C#操作Windows操作系统注册表基类 来源:红黑联盟

    C#操作注册表代码C#操作注册表代码

    ### C#操作Windows注册表详解 #### 一、引言 在Windows系统中,注册表(Registry)扮演着极其重要的角色,它存储了系统和应用程序的配置信息。通过注册表,开发者可以实现对软件配置的读写操作,这对于开发Windows...

    C#操作注册表实现软件注册

    C#作为.NET框架下的编程语言,提供了丰富的API来操作Windows操作系统中的注册表,从而实现软件的注册功能。下面将详细介绍如何使用C#操作注册表来实现软件注册。 首先,我们需要理解注册表在软件注册中的作用。...

    C# 修改注册表值

    在探讨如何使用C#语言修改Windows注册表值之前,我们首先需要了解几个基本概念:注册表的作用、如何安全地操作注册表以及C#语言提供的工具和技术。本篇将围绕“C# 修改注册表值”这一主题展开深入讨论,旨在帮助读者...

    c#操作注册表(新人们请看,高手们指教)

    对于C#开发者而言,掌握如何使用C#来操作注册表是非常重要的技能,这不仅能够增强应用程序的功能性,还能提升系统的稳定性和安全性。下面,我们将详细探讨如何利用C#进行注册表的操作,包括读取、写入、删除和检查...

    C# 操作注册表

    本主题将深入探讨如何使用C#进行注册表操作,这对于管理软件配置、存储用户设置以及执行系统级别的功能调整至关重要。 注册表是Windows操作系统中的核心数据库,它存储了系统和应用程序的配置信息。理解如何安全、...

    C#注册表\C#操作注册表.doc

    标题和描述均提到了"C#操作注册表"的主题,这涉及到使用C#编程语言来读取、写入和管理Windows操作系统中的注册表设置。注册表是Windows系统中用于存储配置设置和选项的一个核心数据库,包括应用程序设置、硬件配置...

    c#操作注册表

    ### C# 操作注册表详解 #### 一、引言 在Windows操作系统中,注册表是一个存储了关于系统配置信息的数据库。它对于系统及其应用软件的正常运作至关重要。通过注册表,系统能够管理和存储软件配置、硬件配置以及...

    [PDF电子书]利用C#操作注册表

    【标题】:“利用C#操作注册表” 【描述】中提到的内容主要涉及如何使用C#编程语言对Windows操作系统中的注册表进行操作,包括创建、打开和删除注册表项,以及创建、修改、读取和删除键值。同时,强调了在进行这些...

    C#操作注册表实现程序随系统开机自动启动

    C#作为.NET框架下的编程语言,提供了方便的API接口来操作注册表,从而实现程序的开机自启功能。本文将详细讲解如何使用C#来实现这一功能,并讨论在不同Windows系统中需要注意的权限和UAC(用户账户控制)问题。 ...

    C# 操作注册表 API

    Api接口,调用相关的入口函数,获取相应的注册表中的要查询的结果

    c# 操作注册表+用WMI读取硬件信息+操作EXCEL实例

    在本文中,我们将深入探讨如何使用C#编程语言来实现三个关键任务:操作注册表、通过WMI(Windows Management Instrumentation)读取硬件信息以及处理Excel文件。这些技能对于任何Windows平台上的软件开发者来说都是...

    C#操作注册表源码--适合初学者参考

    对于初学者来说,理解和掌握如何使用C#操作注册表是提升技能的重要步骤。 首先,我们需要了解C#中用于访问注册表的类:`Microsoft.Win32.Registry`和`Microsoft.Win32.RegistryKey`。`Registry`类提供了一系列静态...

    C#操作注册表键值实现隐藏或显示桌面上的图标

    本文将深入探讨如何使用C#编程语言来操作注册表键值,从而实现隐藏或显示桌面上的图标。这个功能在系统管理、软件定制以及个性化设置中具有实用价值。 首先,我们需要了解注册表的结构。在Windows中,注册表主要由...

    C# 操作注册表 操作注册表

    根据给定的信息,本文将详细解释如何使用C#语言来操作Windows系统的注册表,并通过具体的代码示例来展示创建子键、打开子键、删除子键、设置值以及检查子键是否存在等操作。 ### 一、简介 在Windows操作系统中,...

    C# 注册表 写入和读取

    C#作为.NET框架下的主要编程语言,提供了丰富的API来操作注册表,使得开发者能够轻松地进行读取、写入和修改注册表键值。本篇文章将深入探讨如何在C#中实现注册表的写入和读取操作。 首先,我们要了解.NET框架提供...

    C#注册表操作类(完整版)

    内容网站,C#操作注册表类,内容亲自整理,用的时候稍微改动下就可以

    在C#中操作注册表-简单例子

    在C#中,操作注册表是一项常见的任务,用于读取、写入或修改系统设置。在C#中,我们可以利用.NET Framework提供的`Microsoft.Win32`命名空间中的类来实现这个功能。`Registry`类提供了对Windows注册表的访问,而`...

Global site tag (gtag.js) - Google Analytics