`

C# 操作注册表

 
阅读更多

首先我们来熟悉一下C#中修改注册表的方法与函数。在VC#中提供了Registry类、RegistryKey类来实现对注册表的操作。其中Registry类封装了注册表的七个基本主健:

    Registry.ClassesRoot 对应于 HKEY_CLASSES_ROOT 主键
  Registry.CurrentUser 对应于 HKEY_CURRENT_USER 主键
  Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE 主键
  Registry.User 对应于 HKEY_USER 主键
  Registry.CurrentConfig 对应于 HEKY_CURRENT_CONFIG 主键
  Registry.DynDa 对应于 HKEY_DYN_DATA 主键
  Registry.PerformanceData 对应于 HKEY_PERFORMANCE_DATA 主键

RegistryKey类封装了对注册表的基本操作,包括读取,写入,删除。其中读取的主要函数有:

    OpenSubKey ( string name )方法主要是打开指定的子键。
  GetSubKeyNames ( )方法是获得主键下面的所有子键的名称,它的返回值是一个字符串数组。
  GetValueNames ( )方法是获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。
  GetValue ( string name )方法是指定键的键值。

写入的函数有:

CreateSubKey (string name)方法是增加一个子键
SetValue(string name,string value)方法是设置一个键的键值

删除的函数:

DeleteSubKey ( )方法:删除一个指定的子键。
DeleteSubKeyTree ( )方法:此方法是彻底删除指定的子键目录,即:删除该子键以及该子键以下的全部子键。

 

 参数 valueKind 指定使用的注册表数据类型:
RegistryValueKind 枚举定义受支持的注册表数据类型集以及不受支持的类型 (Unknown) 使用的值。
Binary 指定任意格式的二进制数据。此值与 Win32 API 注册表数据类型 REG_BINARY 等效。
DWord 指定一个 32 位二进制数。此值与 Win32 API 注册表数据类型 REG_DWORD 等效。
ExpandString 指定一个以 NULL 结尾的字符串,该字符串中包含对环境变量(如 %PATH%,当值被检索时,就会展开)的未展开的引用。此值与 Win32 API 注册表数据类型 REG_EXPAND_SZ 等效。
MultiString 指定一个以 NULL 结尾的字符串数组,以两个空字符结束。此值与 Win32 API 注册表数据类型 REG_MULTI_SZ 等效。
QWord 指定一个 64 位二进制数。此值与 Win32 API 注册表数据类型 REG_QWORD 等效。
String 指定一个以 Null 结尾的字符串。此值与 Win32 API 注册表数据类型 REG_SZ 等效。
Unknown 指示一个不受支持的注册表数据类型。例如,不支持 Microsoft Win32 API 注册表数据类型 REG_RESOURCE_LIST。使用此值指定 SetValue 方法应在存储名称/值对时确定适当的注册表数据类型。

例:regKey.SetValue("", value, RegistryValueKind.Binary);

实例1:
C# 修改注册表恢复禁用的注册表、任务管理器和隐藏的文件。

现在的病毒几乎都有禁用注册表、任务管理器、隐藏文件等功能,现在让我简单介绍下C#中是如何实现解除这些限制的。其实很简单,有兴趣的网友可以往下看:
打开VS 2008,建立一个C#的控制台应用程序,代码如下:

using System;
using Microsoft.Win32;

class Changreg
{
    public static void Main()
    {
        Console.Title = "修复系统禁用项目";
        try
        {
            RegistryKey rkey = Registry.CurrentUser.OpenSubKey(@"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",true);
            rkey.SetValue("DisableTaskmgr","0",RegistryValueKind.DWord);//解开禁用的任务管理器
            Console.WriteLine("解开禁用的任务管理器");
            rkey.SetValue("DisableRegistryTools","0",RegistryValueKind.DWord);//解开禁用的注册表
            Console.WriteLine("解开禁用的注册表");
            RegistryKey rkey1 = Registry.LocalMachine.OpenSubKey(@"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\Folder\\Hidden\\SHOWALL",true);
            rkey1.SetValue("CheckedValue", "1", RegistryValueKind.DWord); //显示隐藏文件
            Console.WriteLine("显示隐藏文件");
        }
        catch (System.Exception e)
        {
          Console.WriteLine(e.ToString());
        }
          Console.WriteLine("修复完成!请按任意键退出.");
          Console.ReadKey();
    }
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics