1.首先,必须导入空间"Microsoft.Win32"
- using Microsoft.Win32;
2.利用Registry类,确定注册表的分支(ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig)
- RegistryKey key = Registry.LocalMachine;
3.创建/打开/删除注册表项
- RegistryKey key = Registry.LocalMachine;
- //创建
- //注意:注册表路径一定是"\\"而不是"\"
- RegistryKey software = key.CreateSubKey("software\\MyApp");
- //打开(true表示可以写入)
- RegistryKey software = key.OpenSubKey("software\\MyApp",true);
- RegistryKey Product = software.CreateSubKey("Product");
- //删除
- key.DeleteSubKey("software\\MyApp",true);
- //记得关闭,两个都要关
- key.Close();
- ProductID.Close();
4.创建/打开/删除键值
- RegistryKey key = Registry.LocalMachine;
- RegistryKey software = key.OpenSubKey("software\\My",true);
- //写入
- software.SetValue("ProductID", "Leo Tian's blog");
- //读取
- string info = "";
- info = software.GetValue("ProductID").ToString();
- //删除
- software.DeleteValue("test");
- //关闭
- software.Close()
5.最后贴出两个判断函数
- //判断项目是否存在
- private bool IsRegeditItemExist(RegistryKey RegBoot, string ItemName)
- {
- if (ItemName.IndexOf("\\") <= -1)
- {
- string[] subkeyNames;
- subkeyNames = RegBoot.GetValueNames();
- foreach (string ikeyName in subkeyNames) //遍历整个数组
- {
- if (ikeyName == ItemName) //判断子项的名称
- {
- return true;
- }
- }
- return false;
- }
- else
- {
- string[] strkeyNames = ItemName.Split('\\');
- RegistryKey _newsubRegKey = RegBoot.OpenSubKey(strkeyNames[0]);
- string _newRegKeyName = "";
- int i;
- for(i=1;i<strkeyNames.Length;i++)
- {
- _newRegKeyName = _newRegKeyName + strkeyNames[i];
- if(i!=strkeyNames.Length-1)
- {
- _newRegKeyName = _newRegKeyName + "\\";
- }
- }
- return IsRegeditItemExist(_newsubRegKey,_newRegKeyName);
- }
- }
- //判断键值是否存在
- private bool IsRegeditKeyExist(RegistryKey RegBoot, string RegKeyName)
- {
- string[] subkeyNames;
- subkeyNames = RegBoot.GetValueNames();
- foreach (string keyName in subkeyNames)
- {
- if (keyName == RegKeyName) //判断键值的名称
- {
- return true;
- }
- }
- return false;
- }