本代码是09年7月写的,保存在我的QQ里的,在这里来分享一下,多多指教,代码在使用的过程中经过多次优化了,不过这里还是以前测试的原代码,仅供参考。
此类模块是经过反复测试,确保准确无误后才贴出来的,通过返回值确定每一个操作是否成功,假如您有更好更优化的方案请一起分享。
class general
{
static public string ReigstidFileName = "myRegedit"; //临时定的一个文件名称
//读注册表数据信息
public string GetRegistData(string name) //键名称
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey(ReigstidFileName, true);
registData = aimdir.GetValue(name).ToString();
return registData;
}
//写注册表数据信息,分别是子键名称和值存放LocalMachine目录下的ReigstidFileName文件中,其文件名为name的值,值为tovalue的值
public bool WTRegedit(string name, string tovalue)
{
bool WriteOk = false;
try
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.CreateSubKey(ReigstidFileName);
aimdir.SetValue(name, tovalue);
WriteOk = true;
}
catch
{
WriteOk = false;
}
return WriteOk;
}
//修改注册表数据信息
public bool EditRegedit(string name, string tovalue)
{
bool EditOk = false;
try
{
if (IsRegeditExist(name))
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.CreateSubKey(ReigstidFileName);
aimdir.SetValue(name, tovalue);
EditOk = true;
}
}
catch
{
EditOk = false;
}
return EditOk;
}
//删除注册表数据信息
public bool DeleteRegist(string name)
{
bool DeleteOk = false;
string[] aimnames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey(ReigstidFileName,true );
aimnames = aimdir.GetValueNames();
foreach (string aimKey in aimnames)
{
if (aimKey == name)
{
aimdir.DeleteValue(name);
DeleteOk = true;
}
}
return DeleteOk;
}
//判断注册表数据信息是否存在
public bool IsRegeditExist(string name)
{
bool isExist = false;
string[] subkeyNames;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey(ReigstidFileName);
subkeyNames = aimdir.GetValueNames();
foreach (string keyName in subkeyNames)
{
if (keyName == name)
{
isExist = true;
}
}
return isExist;
}
}
下面是具体的操作:通过返回值确定每一次操作是否成功。
general gs = new general();
public string sFileName ="";
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
sFileName=this.textBox3.Text.Trim().ToString();
string sData = this.textBox1.Text.Trim().ToString();
gs.WTRegedit(sFileName, sData);
}
private void button2_Click(object sender, EventArgs e)
{
this.textBox2.Text=gs.GetRegistData(this.textBox2.Text.Trim().ToString());
}
private void button3_Click(object sender, EventArgs e)
{
this.textBox4.Text = gs.IsRegeditExist(this.textBox4.Text.Trim().ToString()).ToString();
}
private void button4_Click(object sender, EventArgs e)
{
this.textBox5.Text=gs.DeleteRegist(this.textBox5.Text.Trim().ToString()).ToString();
}
private void button5_Click(object sender, EventArgs e)
{
this.textBox6.Text = gs.EditRegedit(this.textBox6.Text.Trim().ToString(), textBox7.Text.Trim().ToString()).ToString();
}