CSharp DotNet(C#.net) 操作注册表
这方面的实例比较少 搜集了几位的例子自己也做了个小例子
这是一个获得当前IE主页
和更改IE主页的小程序
高人见笑了!
在这里完全是充当一个小实例
=======================
/*
* Created: SharpDevelop.
* User: Csy
* Date: 2008-12-29
* Time: 10:11.
*/
RegistryKey myRKCN = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main"); //IE的默认主页位置
foreach (string myIEName in myRKCN.GetValueNames())
{
if (myCpName == "Start Page") //主页的键
{
this.label1.Text = myRKCN.GetValue(myIEName).ToString(); //用它的GetValue方法获得主页地址并赋给Labl1
}
else
{
continue;
}
}
// 在程序的Load事件中读取到IE原默认主页显示到LABEL中
RegistryKey myRKCN = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Internet Explorer\\Main",true);
foreach (string site in myRKCN.GetValueNames())
{
if (site == "Start Page")
{
myRKCN.DeleteValue(site, false);
myRKCN.SetValue("Start Page", this.textBox2.Text);
}
else
{
continue;
}
}
MessageBox.Show("修改成功");
//修改按钮的代码 和Load中的代码大同小异
使用了DeleteValue和SetValue两个方法。
=======================
private string GetRegistData(string name)
{
string registData;
RegistryKey RegKey = Registry.LocalMachine;
RegistryKey RegKey1= RegKey.OpenSubKey("SOFTWARE",true);
RegistryKey RegKey2 = software.OpenSubKey("XXX",true);
registData = RegKey2.GetValue(name).ToString();
return registData;
}
以上是读取的注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下的XXX目录中名称为name的注册表值;
2.向注册表中写数据
private void WTRegedit(string name,string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey RegKey1= hklm.OpenSubKey("SOFTWARE",true);
RegistryKey RegKey2 = software.CreateSubKey("XXX");
RegKey2.SetValue(name,tovalue);
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下新建XXX目录并在此目录下创建名称为name值为tovalue的注册表项;
3.删除注册表中指定的注册表项
private void DeleteRegist(string name)
{
string[] aimnames;
RegistryKey RegKey = Registry.LocalMachine;
RegistryKey RegKey1= RegKey.OpenSubKey("SOFTWARE",true);
RegistryKey RegKey2 = software.OpenSubKey("XXX",true);
aimnames = RegKey2.GetSubKeyNames();
foreach(string aimKey in aimnames)
{
if(aimKey == name)
RegKey2.DeleteSubKeyTree(name);
}
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中删除名称为name注册表项;
4.判断指定注册表项是否存在
private bool IsRegeditExit(string name)
{
bool _exit = false;
string[] subkeyNames;
RegistryKey RegKey = Registry.LocalMachine;
RegistryKey RegKey1= RegKey.OpenSubKey("SOFTWARE",true);
RegistryKey RegKey2 = software.OpenSubKey("XXX",true);
subkeyNames = RegKey2.GetSubKeyNames();
foreach(string keyName in subkeyNames)
{
if(keyName == name)
{
_exit = true;
return _exit;
}
}
return _exit;
}
以上是在注册表中HKEY_LOCAL_MACHINE\SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断 小东西不错! 谢谢分享 啊~~~~
页:
[1]