mycsy 发表于 2009-2-21 16:20

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注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断

紫轩冰凌 发表于 2009-2-21 17:29

小东西不错!

luo8268326 发表于 2010-11-22 23:24

谢谢分享 啊~~~~

zjnucgzx 发表于 2013-1-31 15:35

页: [1]
查看完整版本: CSharp DotNet(C#.net) 操作注册表