registry hive
在注册表中,最上面的节点是注册表配置单元(registry hive),有7个注册表配置单元,但用regedit只能看到5个
- HKEY_CLASSES_ROOT(HKCR)包含系统上文件类型的细节,以及使用哪些应用程序可以打开每种文件。它还包含所有COM组件的注册信息,目前的Windows带有非常多的COM组件。
- HKEY_CURRENTS_USERS(HKCU)包含用户目前登录的计算机的用户配置。这些配置包括桌面设置、环境变量、网格和打印机连接,以及其他定义用户的操作环境的设置。
- HKEY_LOCAL_MACHINE(HKLM)包含所有安装到计算机上的软件和硬件信息,其中HKCR只是一个对注册表键HKLM/SOFTWARE/Classes的方便映射。
- HKEY_USERS(HKUSR)包含所有用户的用户首选项。其中HKCU是其中的一个键的映射。
- HKEY_CURRENT_CONFIG(HKCF)包含计算机上硬件的详细信息
其余的两个键包含临时信息,这些信息常常会更改:
- HKEY_DYN_DATA包含需要存储在注册表中的任何易失性数据
- HKEY_PERFORMANCE_DATA 包含与运行应用程序的性能相关的信息
RegisterKey类
属性
Name 键的名称(只读)
SubKeyCount 键的子键个数
ValueCount 键包含的值的个数
方法
Close()关闭键
CreateSubKey()创建给定名称的子键(如果该子键已经存在,就打开它)
DeleteSubKey()删除指定的子键
DeleteSubKeyTree()递归删除子键及及所有子键
DeleteValue()从键中删除一个指定的值
GetAccessControl()返回指定注册表键的ACL
GetSubKeyNames()返回包含子键名称的字符串数组
GetValue() 返回指定的值
GetValueKind()返回指定 的值,要检索其注册表数据类型
GetValueName()返回一个包含所有键值名称的字符数组
OpenSubKey()返回表示给定子键的RegistryKey实例的引用
SetAccessControl()把ACL应用于指定的注册键
SetValue()设置指定的值
应用示例
1.读取本机软件安装信息
using(RegistryKey key =Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall",false))//false表示以只读打开
{
if(key!=null)
{
foreach(string keyName in key.GetSubKeyNames())
{
using(RegistryKey key2 = key.OpenSubKey(keyName,false))
{
if(key2!=null)
{
string softwareName = key2.GetValue("DisplayName","").toString();
string installLocation j= key2.GetValue("InstallLocation","").toString();
}
}
}
}
}
2.隐藏桌面图标
using (RegistryKey key=Registry.CurrentUser.CreateeSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"))
{
key.SetValue("NoDeskTop",1,RegistryValueKind.DWord);
}
禁用活动桌面:在注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer项下的值NoDeskTop,当其值为“1”时,表示隐藏桌面,其值为0表示显示桌面。该设置只有重启计算机后才能生效。
启用活动桌面:在注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer项下的值ForceActiveDesktoopOn,设置为1
最后欢迎大家访问我的个人网站: 1024s