C#操作注册表的方法_C#教程-查字典教程网
C#操作注册表的方法
C#操作注册表的方法
发布时间:2016-12-28 来源:查字典编辑
摘要:usingMicrosoft.Win32;1.读取指定名称的注册表的值复制代码代码如下:privatestringGetRegistData...

usingMicrosoft.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_MACHINESOFTWARE目录下的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_MACHINESOFTWARE目录下新建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_MACHINESOFTWARE目录下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_MACHINESOFTWARE目录下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("softwareLabManager");

software = key.OpenSubKey("softwareLabManager", 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("softwareLabManager");

if (IsRegeditKeyExit("softwareLabManager", "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("softwareLabManager",true);

if (IsRegeditKeyExit("softwareLabManager", "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;

}

}

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类