C#操作注册表——读、写、删除、判断等基本操作
一、引入命名空间:
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#操作注册表——读、写、删除、判断等基本操作的更多相关文章
- How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置
原文:How to:Installshield判断操作系统是否为64位,并且为操作注册表进行设置 IS脚本操作注册表在64位平台下必须有特殊的设置 if (SYSINFO.bIsWow64) then ...
- [转]C#操作注册表
原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主 ...
- c++ 操作注册表
1. 注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...
- C#操作注册表全攻略
相信每个人对注册表并不陌生,在运行里面输入“regedit”就可以打开注册表编辑器了.这东西对Windows系统来说可是比较重要的,也是病 毒常常会光顾的地方,比如病毒和恶意软件常常会在注册表的启动项 ...
- C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表 .
转:http://blog.csdn.net/smartsmile2012/article/details/8682295 #region 获取cpu序列号 硬盘ID 网卡硬地址 /**/ /// & ...
- C#操作注册表(简单方便,兼容X32和X64)
C#操作注册表(简单方便,兼容X32和X64) 大家好,我在这里给大家介绍本人实现的操作注册表的类,简单方便,兼容32位系统和64位系统. 一般大家用C#操作注册的方法是使用命名空间Microsoft ...
- VBS 操作注册表 十六进制
使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRe ...
- C#操作注册表--DarrenF
步骤/方法 读取指定名称的注册表的值 private string GetRegistData(string name) { string registData; RegistryKey hkml = ...
- 对Jscript操作注册表接口的一点不解
作者:朱金灿 来源:http://blog.csdn.net/clever101 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作.Wshshell ...
随机推荐
- WinForm的TreeView实现Win7 Areo效果
新建一个继承自TreeView的控件类,代码如下: using System; using System.Windows.Forms; using System.Drawing; using Syst ...
- 使用bootstrapvalidator的remote验证经验
这里需要说一下,bootstrapvalidator的帮助文档写的比较简单,对于remote验证器的说明更是如此,在经历多方测试之后才明白如何使用这个验证器. 一个典型的ajax验证代码如下: 服务端 ...
- pca图像识别
代码下载:基于PCA(主成分分析)的人脸识别 人脸识别是一个有监督学习过程,首先利用训练集构造一个人脸模型,然后将测试集与训练集进行匹配,找到与之对应的训练集头像.最容易的方式是直接利用欧式距离计算测 ...
- linux android ndk
Android调用so库, so库是c语言编写, 在linux 64位系统+ndk(32位)生成 lib*.so (32位) 1. 所需软件环境: 1)so库开发环境 操作系统: Redhat Ser ...
- Java 枚举随笔
public enum Color{ //定义枚举并赋值 RED("红色", 1), Blue("蓝色", 2), Yellow("黄色", ...
- css布局学习笔记之position属性
position属性用于定位元素,它的几个值分别如下: 1,static static 是默认值.任意 position: static; 的元素不会被特殊的定位.一个 static 元素表示它不会被 ...
- tuple只有一个元素的时候,必须要加逗号
In [1]: a = (1) In [2]: a Out[2]: 1 In [3]: a = (1,) In [4]: a Out[4]: (1,) 这是因为括号()既可以表示tuple,又可以表示 ...
- 异常处理与调试5 - 零基础入门学习Delphi54
调试(Debug) 让编程改变世界 Change the world by program [caption id="attachment_2731" align="al ...
- C语言数据类型转换
变量的数据类型是可以转换的.转换的方法有两种,一种是自动转换,一种是强制转换. 自动转换 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成.自动转换遵循以下规则: 若参与运算量的类型不同, ...
- oc语言--description方法和sel
一.description方法 Description方法包括类方法和对象方法.(NSObject类所包含) (一)基本知识 -description(对象方法) 使用NSLog和@%输出某个对象时, ...