C#操作注册表的方法

using Microsoft.Win32 ;

1.读取指定名称的注册表的值



代码如下:

private string GetRegistData(string name)
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
registData = aimdir.GetValue(name).ToString();
return registData;
}

以上是读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名称为name的注册表值;

2.向注册表中写数据

代码如下:

private void WTRegedit(string name,string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.CreateSubKey("XXX");
aimdir.SetValue(name,tovalue);
}

以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项;

3.删除注册表中指定的注册表项

代码如下:

private void DeleteRegist(string name)
{
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
aimnames = aimdir.GetSubKeyNames();
foreach(string aimKey in aimnames)
{
if(aimKey == name)
aimdir.DeleteSubKeyTree(name);
}
}

以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中删除名称为name注册表项;

4.判断指定注册表项是否存在

代码如下:

private bool IsRegeditExit(string name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE",true);
RegistryKey aimdir = software.OpenSubKey("XXX",true);
subkeyNames = aimdir.GetSubKeyNames();
foreach(string keyName in subkeyNames)
{
if(keyName == name)
{
_exit = true;
return _exit;
}
}
return _exit;
}

以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断;

代码如下:

using System.Windows.Forms;
using Microsoft.Win32;

namespace RegeditManager
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //创建并写入
        private void button1_Click(object sender, EventArgs e)
        {
            RegistryKey key = Registry.LocalMachine;
            try
            {
                RegistryKey software = key.CreateSubKey("software\\LabManager");
                software = key.OpenSubKey("software\\LabManager", true);
                software.SetValue("Address", @"C:\Program Files\实验室管理系统\dbcom.xml");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                key.Close();
            }
        }
        //读取
        private void button2_Click(object sender, EventArgs e)
        {
            string info = string.Empty;
            RegistryKey key=Registry.LocalMachine;
            try
            {
                key = key.OpenSubKey("software\\LabManager");
                if (IsRegeditKeyExit("software\\LabManager", "Address"))
                {
                    info = key.GetValue("Address").ToString();
                    MessageBox.Show("注册表里的信息为:" + info);
                }
                else
                {
                    MessageBox.Show("键值Address不存在;");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                key.Close();
            }
        }
        //删除
        private void button3_Click(object sender, EventArgs e)
        {
            RegistryKey key = Registry.LocalMachine;
            try
            {
                key = key.OpenSubKey("software\\LabManager",true);
                if (IsRegeditKeyExit("software\\LabManager", "Address"))
                {
                    key.DeleteValue("Address");
                    MessageBox.Show("删除成功");
                }
                else
                {
                    MessageBox.Show("键值Address不存在;");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                key.Close();
            }
        }

/// <summary>
        /// 判断键值是否存在
        /// </summary>
        /// <param name="RegistryStr">注册表项</param>
        /// <param name="KeyStr">键值</param>
        /// <returns></returns>
        private bool IsRegeditKeyExit(string RegistryStr,string KeyStr)
        {
            string[] subkeyNames;

RegistryKey hkml = Registry.LocalMachine;

RegistryKey software = hkml.OpenSubKey(RegistryStr);

subkeyNames = software.GetValueNames();

foreach (string keyName in subkeyNames)
            {
                if (keyName == KeyStr)  //判断键值的名称
                {
                    hkml.Close();

return true;
                }
            }
            hkml.Close();

return false;
        }

/// <summary>
        /// 判断注册表项是否存在
        /// </summary>
        /// <param name="RegistryName">例如:SOFTWARE</param>
        /// <param name="ValueStr">例如:LabManager</param>
        /// <returns></returns>
        private bool IsRegeditItemExist(string RegistryName,string ValueStr)
        {
            string[] subkeyNames;

RegistryKey hkml = Registry.LocalMachine;

RegistryKey software = hkml.OpenSubKey(RegistryName);

subkeyNames = software.GetSubKeyNames();

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

foreach (string keyName in subkeyNames)  //遍历整个数组
            {
                if (keyName == ValueStr) //判断子项的名称
                {
                    hkml.Close();
                    return true;
                }
            }
            hkml.Close();
            return false;

}
    }
}

(0)

相关推荐

  • 使用C#在注册表中保存信息的例子

    写出来,方便记忆,以后要用,可以直接改改就能用. 复制代码 代码如下: using System; namespace Backend{    public class RegistryStorage    {        public static PageVisibility OpenAfterStart()        {            Microsoft.Win32.RegistryKey registryKey;            PageVisibility visi

  • C#操作注册表的方法详解

    本文实例讲述了C#操作注册表的方法.分享给大家供大家参考,具体如下: 下面我们就来用.NET下托管语言C#注册表操作,主要内容包括:注册表项的创建,打开与删除.键值的创建(设置值.修改),读取和删除.判断注册表项是否存在.判断键值是否存在. 准备工作: 1. 要操作注册表,我们必须要引入必要的命名空间: 复制代码 代码如下: using Microsoft.Win32; 在这个命名空间里面包含了许多注册表相关的类,足够我们使用了~~ 2. 命名空间里面提供了一个类:RegistryKey 利用它

  • C#实现读取注册表监控当前操作系统已安装软件变化的方法

    本文实例讲述了C#实现读取注册表监控当前操作系统已安装软件变化的方法.分享给大家供大家参考.具体实现方法如下: private static HybridDictionary GetSoftName() { string strSoftName = string.Empty; HybridDictionary hdSoftName = new HybridDictionary(); /*对注册表节点"Software/Microsoft/Windows/CurrentVersion/Uninst

  • C# WinForm中禁止改变窗口大小的方法

    本文介绍在使用C#开发WinForm窗体程序时,如何设置窗体的大小不能被改变. 我们在开发一个窗体(WinForm)程序时,所有的控件都部署在程序界面上了,如果这时来把窗体的大小调整一下,那界面就难看了.怎么设置窗体大小不能被修改呢? 在Form类下面有一个FormBorderStyle的字段,我们可以通过设置它的值来让窗体不能被拉大拉小.FormBorderStyle的值设置为FormBorderStyle.FixedSingle或Fixed3D时,窗体大小是不能被改变的. 当然,还有一种情况

  • WinForm通过操作注册表实现限制软件使用次数的方法

    本文实例讲述了WinForm通过操作注册表实现限制软件使用次数的方法.分享给大家供大家参考,具体如下: 1.创建注册表文件: 打开记事本,输入一些内容: REGEDIT4 [HKEY_CURRENT_USER/Software/MyRegDataApp] "UseTime"="10" 保存为"RegData.reg" 2.创建winform项目 引用名称空间 using Microsoft.Win32 ; 在Form中激活load事件,并添加代码

  • c#读写注册表示例分享

    复制代码 代码如下: //写注册表RegistryKey regWrite;//往HKEY_CURRENT_USER主键里的Software子键下写一个名为"Test"的子键//如果Test子键已经存在系统会自动覆盖它regWrite = Registry.CurrentUser.CreateSubKey("Software\\Test");//往Test子键里添两条数据项,一条名为"Name",另一条名为"Sex"//值分别

  • C#通过windows注册表获取软件清单的方法

    本文实例讲述了C#通过windows注册表获取软件清单的方法.分享给大家供大家参考.具体如下: foreach (string SoftwareName in Object.SoftwareList()) { textBox.Text += SoftwareName + Environment.NewLine; } //////////////////////////////////////////////////////////////////////// /// <summary> ///

  • C#设置软件开机自动运行的方法(修改注册表)

    本文实例讲述了C#设置软件开机自动运行的方法.分享给大家供大家参考,具体如下: #region /// <summary> /// 开机启动项 /// </summary> /// <param name="Started">是否启动</param> /// <param name="name">启动值的名称</param> /// <param name="path"

  • C#设置自定义文件图标实现双击启动(修改注册表)

    程序生成的自定义文件,比如后缀是.test 这种文件怎么直接启动打开程序,并打开本文件呢 1.双击打开 2.自定义的文件,有图标显示 3.自定义的文件,点击右键有相应的属性 后台代码:(如何在注册表中修改信息) //工具启动路径 string toolPath = System.Windows.Forms.Application.StartupPath + "\\邮件小工具.exe"; string extension = SptdConst.FileExtension; string

  • C#读写注册表的思路及代码

    NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey.这两个类都是密封类不允许被继承.下面我们分别来介绍这两个类.Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有)分别是:  Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 Registry.CurrentUser 对应于HKEY_CURRENT_USER主键 Registry.LocalMachine

  • C# 注册表 操作实现代码

    其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG. 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息.该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHIN

随机推荐