一、引入命名空间:

using Microsoft.Win32;

二、创建注册表项:CreateSubKey(name)方法

添加SubKey时候首先要打开一个表项,并设置参数为true,才能成功创建子项

//给要创建的注册表设置一个变量,使用更方便
private string RegistFileName = "test";
/// <summary>
/// 创建一个test注册表项,下面包含OpenLog,和SaveLog两个子项
/// </summary>
private void CreateRegistFile()
{
  //SOFTWARE在LocalMachine分支下
RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE",true);
RegistryKey software = key.CreateSubKey(RegistFileName);
RegistryKey test = key.OpenSubKey(RegistFileName,true);
RegistryKey Savekey = test.CreateSubKey("SaveLog");
}

三、删除注册表项:DeleteSubKey(name,true)方法

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE", true);
RegistryKey test = software.OpenSubKey(RegistFileName, true);
test.DeleteSubKey("SaveLog",true);

四、添加键值:SetValue(name,value)方法

/// <summary>
/// 将path写入OPenLog子项
/// </summary>
private void writeToRegistFile(string path)
{
  RegistryKey key = Registry.LocalMachine;
  RegistryKey software = key.OpenSubKey("SOFTWARE", true);
  RegistryKey test = software.OpenSubKey(RegistFileName, true);
  RegistryKey OpenPath = test.OpenSubKey("OpenLog",true);
  //"name"是该键值的name,相当于一个别名,可自行设置
  OpenPath.SetValue("name", path);
}

五、删除键值:DeleteValue(name)方法

RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE", true);
RegistryKey test = software.OpenSubKey(RegistFileName, true);
RegistryKey OpenPath = test.OpenSubKey("SaveLog",true);
//删除SaveLog子项下的名为SaveLog的子键
OpenPath.DeleteValue("name");

六、判断注册表项是否存在:

/// <summary>
/// 判断注册表项是否存在
/// </summary>
/// <returns>bool</returns>
private bool IsRegeditItemExist()
{
  string[] subkeyNames;
  RegistryKey key = Registry.LocalMachine;
  RegistryKey software = key.OpenSubKey("SOFTWARE");
  subkeyNames = software.GetSubKeyNames();
  //在这里我是判断test表项是否存在
  foreach (string keyName in subkeyNames)
  {
    if (keyName == RegistFileName)
    {
      key.Close();
      return true;
    }
  }
  key.Close();
  return false;
}

七、判断键值是否存在:

/// <summary>
/// 判断该路径是否已经存在
/// </summary>
/// <param name="path">路径</param>
/// <returns></returns>
private bool IsRegeditKeyExit(string name)
{string[] saveSubkeyNames; RegistryKey key = Registry.LocalMachine;
RegistryKey software = key.OpenSubKey("SOFTWARE", true);
RegistryKey test = software.OpenSubKey(RegistFileName, true);
RegistryKey Savekey = test.OpenSubKey("SaveLog", true);
  //获取该子项下的所有键值的名称saveSubkeyNames
saveSubkeyNames = Savekey.GetSubKeyNames();
foreach(string keyName in openSubkeyNames)
{
if(keyName == name)
{
key.Close();
return false;
}
}
key.Close();
return true;
}

注:如果没有该注册表项或键值,则返回的值为空值,若不经处理运行程序会抛出异常。

有错误的地方欢迎指出,谢谢!

C#操作注册表——读、写、删除、判断等基本操作的更多相关文章

  1. How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置

    原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...

  2. [转]C#操作注册表

    原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主 ...

  3. c++ 操作注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  4. C#操作注册表全攻略

    相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项 ...

  5. C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .

    转:http://blog.csdn.net/smartsmile2012/article/details/8682295 #region 获取cpu序列号 硬盘ID 网卡硬地址 /**/ /// & ...

  6. C#操作注册表(简单方便,兼容X32和X64)

    C#操作注册表(简单方便,兼容X32和X64) 大家好,我在这里给大家介绍本人实现的操作注册表的类,简单方便,兼容32位系统和64位系统. 一般大家用C#操作注册的方法是使用命名空间Microsoft ...

  7. VBS 操作注册表 十六进制

    使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRe ...

  8. C#操作注册表--DarrenF

    步骤/方法 读取指定名称的注册表的值 private string GetRegistData(string name) { string registData; RegistryKey hkml = ...

  9. 对Jscript操作注册表接口的一点不解

    作者:朱金灿 来源:http://blog.csdn.net/clever101 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作.Wshshell ...

随机推荐

  1. asp.net 追加文本(追加写入记事本)

    代码: string path = Server.MapPath("/Log/Log.txt"); if (File.Exists(path)) { using (StreamWr ...

  2. C#中DataGridView控件使用大全

    DataGridView 动态添加新行: DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动 ...

  3. Webfrom 上传 单个上传 多个上传

    文件上传控件:FileUpload - 控件,界面+方法+属性Button/LinkButton/ImageButton FileUpload控件:1.SaveAs("要上传到服务器的绝对路 ...

  4. HttpServletResponse HttpServletRequest RequestDispatcher

    HttpServletResponse HttpServletRequest RequestDispatcher 07. 五 / J2EE / 没有评论   一.以字节为单位向客户端发送中文数据1.服 ...

  5. debian 64位系统中添加对32位的支持

    dpkg --add-architecture i386 apt-get update apt-get install ia32-libs

  6. 1007 Numerical Summation of a Series

    简单入门题.按照题目给的指导编程,算多少数要理解题意. #include <stdio.h> int main(){ int k,ssx; double x,psix; ;ssx<= ...

  7. MyEclipse6.5安装SVN插件的三种方法

    MyEclipse6.5安装SVN插件的三种方法 方法一.如果可以上网可在线安装 1. 打开Myeclipse,在菜单栏中选择Help→Software Updates→Find and Instal ...

  8. SPOJDIVCNT2: Counting Divisors(莫比乌斯反演)

    http://acm.tzc.edu.cn/acmhome/vProblemList.do?method=problemdetail&oj=SPOJ&pid=DIVCNT2 给出n求 ...

  9. ant的入门 配置与安装

    最近需要用ant来生成文件,java类.我才开始了解了这个工具.仔细看了一下,感觉这个小工具的强大功能. 博主也是初学者,在网上收集了资料,尝试了配置:感觉有些高手写得不错变引用之. 配置如下: 以上 ...

  10. linux命令行常用快捷键

    方向          <-前               后 ->删除ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dlctrl + h      删除光标所在 ...