命名空间:
using Microsoft.Win32;
常用函数
首先我们来熟悉一下c#中修改注册表的方法和函数。在vc#中提供了registry类、registrykey类来实现对注册表的操作。其中registry类封装了注册表的七个基本主健:
registry.classesroot 对应于hkey_classes_root主键
registry.currentuser 对应于hkey_current_user主键
registry.localmachine 对应于 hkey_local_machine主键
registry.user 对应于 hkey_user主键
registry.currentconfig 对应于heky_current_config主键
registry.dynda 对应于hkey_dyn_data主键
registry.performancedata 对应于hkey_performance_data主键
registrykey类封装了对注册表的基本操作,包括读取,写入,删除。其中读取的主要函数有:
opensubkey ( string name )方法主要是打开指定的子键。
getsubkeynames ( )方法是获得主键下面的任何子键的名称,他的返回值是个字符串数组。
getvaluenames ( )方法是获得当前子键中的任何的键名称,他的返回值也是个字符串数组。
getvalue ( string name )方法是指定键的键值。
写入的函数有:
createsubkey(string name)方法是增加一个子键
setvalue(string name,string value)方法是配置一个键的键值
删除的函数:
deletesubkey ( )方法:删除一个指定的子键。
deletesubkeytree ( )方法:
此方法是完全删除指定的子键目录,即:删除该子键连同该子键以下的全部子键。
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_MACHINE\SOFTWARE目录下的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_MACHINE\SOFTWARE目录下新建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_MACHINE\SOFTWARE目录下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_MACHINE\SOFTWARE目录下XXX目录中判断名称为name注册表项是否存在,这一方法在删除注册表时已经存在,在新建一注册表项时也应有相应判断;
==================================================================================
下面是设置开机自动运行的设置及操作:
开机自动启动项设置及相关函数