手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#操作注册表的方法
C#操作注册表的方法
摘要: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#线程 BeginInvoke和EndInvoke使用方法

c#之利用API函数实现动画窗体的方法详解

VB.NET中Caching的使用方法

C# 多线程读取注册表,加载至TreeView

深入C# 内存管理以及优化的方法详解

C#操作windows注册表的方法

C#操作config文件的具体方法

C#几种排序算法

C#中一些你可能没用过的调试窗口的方法

遍历Hashtable 的几种方法

精品推荐
分类导航