一、前言
百度百科:Windows注册表(Registry)实质上是一个庞大的数据库,它存储着下面这些内容:用户计算机软、硬件的有关配置和状态信息,应用程序和资源管理器外壳的初始条件、首选项和卸载数据;计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件的描述、状态和属性;计算机性能记录和底层的系统状态信息,以及各类其他数据。
在我们平常的计算机维护和使用中,可能会和注册表打交道,一些问题的解决可能会涉及到对注册表的相关键值进行增删改查等操作。
二、打开注册表编辑器
按win + R
键,输入regedit
,按回车,可以打开注册表编辑器
在注册表编辑器中,我们可以看到五大主键:
主键 | 说明 |
---|---|
HKEY_CLASSES_ROOT(根主键) | 包含了所有已装载的应用程序、OLE或DDE信息,以及所有文件类型信息。 |
HKEY_CURRENT_USER(当前用户主键) | 记录了有关登录计算机网络的特定用户的设置和配置信息。 |
HKEY_LOCAL_MACHINE(机器主键) | 该主键存储了Windows开始运行的全部信息。即插即用设备信息、设备驱动器信息等都通过应用程序存储在此键。 |
HKEY_USERS(用户主键) | 描述了所有同当前计算机联网的用户简表。如果您独自使用该计算机,则仅.Default子键中列出了有关用户信息。该子键包括了控制面板的设置。 |
HEKY_CURRENT_CONFIG(当前配置主键) | 该键存储了系统的动态信息,这些信息保存在随机存储器中。此键住处能用于系统快捷操作,可以看到网络统计和当前系统配置的任何信息。 |
三、使用C#查询注册表信息
在Microsoft.Win32
命名空间下,有个Registry
静态类,提供了各大主键的静态对象,比如HKEY_CLASSES_ROOT
主键,直接使用Registry.ClassesRoot
来访问。
如下,我们想查询HKEY_CLASSES_ROOT\unityhub\DefaultIcon
这个键中,name
为(默认)
的数据
对应的C#
代码如下
using Microsoft.Win32;
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// 注意不需要HKEY_CLASSES_ROOT,另外\注意用\\
RegistryKey subKey = Registry.ClassesRoot.OpenSubKey("unityhub\\DefaultIcon");
if(null != subKey)
{
// name是(默认),所以直接使用空字符串""即可
string unityHubExe = (string)subKey.GetValue("");
Console.WriteLine("unityHubExe: " + unityHubExe);
}
//让程序不退出
Console.ReadLine();
}
}
}
运行效果: