C# 操作注册表WindowsRegistry

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
namespace BugsBox.Application.Core
{
    public class WindowsRegistry
    {

        const string REGISTRY_ITEM_PATH = "software\\pharmacyinst";
        /// <summary>
        /// 创建注册表项
        /// </summary>
        /// <param name="registryItemPath"></param>
        public static void CreateRegistry(string registryItemPath = REGISTRY_ITEM_PATH)
        {
            RegistryKey key = Registry.LocalMachine;
            RegistryKey software = key.CreateSubKey(registryItemPath);
            //在HKEY_LOCAL_MACHINE\SOFTWARE下新建名为test的注册表项。如果已经存在则不影响!
        }

        /// <summary>
        /// 获取注册表值
        /// </summary>
        /// <returns></returns>
        public static string GetRegistryValue(string key, string registryItemPath = REGISTRY_ITEM_PATH)
        {
            string info = "";
            RegistryKey Key;
            Key = Registry.LocalMachine;
            var myreg = Key.OpenSubKey(registryItemPath);
            info = myreg.GetValue(key).ToString();
            myreg.Close();
            return info;
        }

        /// <summary>
        /// 修改注册表项值
        /// </summary>
        /// <param name="subKey"></param>
        /// <param name="val"></param>
        /// <param name="registryItemPath"></param>
        public static void SetRegistryValue(string subKey, string val, string registryItemPath = REGISTRY_ITEM_PATH)
        {
            using (RegistryKey key = Registry.LocalMachine)
            {
                RegistryKey software = key.OpenSubKey(registryItemPath, true); //该项必须已存在
                software.SetValue(subKey, val);
                //在HKEY_LOCAL_MACHINE\SOFTWARE\test下创建一个名为“test”,值为“博客园”的键值。如果该键值原本已经存在,则会修改替换原来的键值,如果不存在则是创建该键值。
                // 注意:SetValue()还有第三个参数,主要是用于设置键值的类型,如:字符串,二进制,Dword等等~~默认是字符串。如:
                // software.SetValue("test", "0", RegistryValueKind.DWord); //二进制信息
                key.Close();
            }
        }

        /// <summary>
        /// 删除注册表项
        /// </summary>
        public static void DeleteRegistry(string registryItemPath = REGISTRY_ITEM_PATH)
        {
            RegistryKey key = Registry.LocalMachine;
            key.DeleteSubKey(registryItemPath, true); //该方法无返回值,直接调用即可
            key.Close();
        }

        /// <summary>
        /// 删除注册表值
        /// </summary>
        public static void DeleteRegistryValue(string subKey, string registryItemPath = REGISTRY_ITEM_PATH)
        {
            RegistryKey delKey = Registry.LocalMachine.OpenSubKey(registryItemPath, true);
            delKey.DeleteValue(subKey);
            delKey.Close();
        }

        /// <summary>
        /// 判断注册表项是否存在
        /// </summary>
        /// <returns></returns>
        public static 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;
        }
        /// <summary>
        /// 判断键值是否存在
        /// </summary>
        /// <returns></returns>
        public static bool IsRegeditKeyExist(string subKey, string registryItemPath = REGISTRY_ITEM_PATH)
        {
            string[] subkeyNames;
            RegistryKey hkml = Registry.LocalMachine;
            RegistryKey software = hkml.OpenSubKey(registryItemPath);
            //RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test", true);
            subkeyNames = software.GetValueNames();
            //取得该项下所有键值的名称的序列,并传递给预定的数组中
            foreach (string keyName in subkeyNames)
            {
                if (keyName == subKey) //判断键值的名称
                {
                    hkml.Close();
                    return true;
                }

            }
            hkml.Close();
            return false;
        }
    }
}
时间: 2024-08-10 06:32:17

C# 操作注册表WindowsRegistry的相关文章

[荐]使用Js操作注册表

使用Js操作注册表 要操作注册表需要通过ActiveX控件调用WScript.shell对象,通过该对象的一些方法来操作. WshShell对象:可以在本地运行程序.操纵注册表内容.创建快捷方式或访问系统文件夹.

C#操作注册表

下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和删除.判断注册表项是否存在.判断键值是否存在.准备工作:1:要操作注册表,我们必须要引入必要的命名空间: using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~2:命名空间里面提供了一个类:RegistryKey 利用它我们可以定位到注册表最开头的分支:ClassesRoot,CurrentUser,Users,Loca

Process Monitor监控进程操作注册表如何实现?

http://zhidao.baidu.com/link?url=Kqav4qkQSprC5FnpHPOGJvhqvY9fJ9-Vdx9g_SWh4w5VOusdRJo4Vl7qIdrG4LwRJvraB9s9UipTVOgp7NJvLGIXiaXwWjQz5LP0TX_ixyC Process Monitor监控进程操作注册表如何实现?  2014-09-14 14:485203751 | 浏览 1092 次 操作系统 Process Monitor这个工具是微软的一个监控进程注册表操作,文件

C#操作注册表全攻略

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

易语言操作注册表

关键是了解易语言自带的: “写注册项” 这个方法. 如: 写注册项 (#本地机器, “SOFTWARE\Microsoft\Internet Explorer\MAIN\Start Page”, “http://www.baidu.com”) 这样就在#本地机器中的指定位置键下写入了默认键值信息. 那么第一个参数“#本地机器”代表什么意思呢?   看下图就知道了 以上是易语言和注册表中对应键关系. 具体操作注册表,再上一图片就明白了 以上是易语言通常操作注册表的添加,修改等方法, 值得注意的是:

VBS 操作注册表 十六进制

使用VBS操作注册表,通常使用RegRead/RegWrite/RegDelete方法,如: RegRead: 'read.vbs(将以下代码存为read.vbs文件) Dim OperationRegistry Set OperationRegistry=WScript.CreateObject("WScript.Shell") Dim Read_Data1,Read_Data2 Read_Data1=OperationRegistry.RegRead("HKCR\.xxf

[转]C#操作注册表

原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主要内容包括: * 注册表项的创建,打开与删除 * 键值的创建(设置值.修改),读取和删除 * 判断注册表项是否存在.判断键值是否存在.准备工作:1:要操作注册表,我们必须要引入必要的命名空间: using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~

C# 访问操作注册表整理

一..net注册表操作简介 .net中Registry 类,RegistryKey 类提供了操作注册表的接口 RegistryValueKind,用于指定操作注册表的数据类型. 二.使用实例 //获取子节点数量 Console.WriteLine(Registry.LocalMachine.SubKeyCount); //获取所有自己点的键值 string[] subs = Registry.LocalMachine.GetSubKeyNames(); foreach (var item in

转 Python模块——_winreg操作注册表

Python模块--_winreg操作注册表 (2010-01-22 13:47:01) 转载▼ 标签: python _winreg 注册表 删除键 name 默认网关 utf-8 it 分类: Python 用python操作修改windows注册表,显然要比用C或者C++简单. 主要参考资料:官方文档:http://docs.python.org/library/_winreg.html 通过python操作注册表主要有两种方式,一种是通过python的内置模块 _winreg,另一种方式