编程技术分享平台

网站首页 > 技术教程 正文

闲聊Windows注册表-GUID(windows注册表详解)

xnh888 2024-10-31 15:45:01 技术教程 101 ℃ 0 评论

今天继续闲聊Windows注册表系列之六,编程方面后面再讲。经常查看注册表的同学会发现注册表常常有类似用GUID形式做注册表键的(GUID我就不多做解释了)。

像上图中的CLSID下通常是COM组件注册项,这个每个COM组件内部有定义,在系统中注册时会写进上图中的注册表。

象上图中CurrentControlSet\Control\Class注册表键,笔者因工作关系经常会查看和使用,这里的GUID一般是Windows系统内部定义好的,每个GUID代表一种设备类型,比如微软是这样定义的:

光驱:DEFINE_GUID( GUID_DEVCLASS_CDROM,               0x4d36e965L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
主机:DEFINE_GUID( GUID_DEVCLASS_COMPUTER,            0x4d36e966L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
磁盘:DEFINE_GUID( GUID_DEVCLASS_DISKDRIVE,           0x4d36e967L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
显卡:DEFINE_GUID( GUID_DEVCLASS_DISPLAY,             0x4d36e968L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
磁盘控制器:DEFINE_GUID( GUID_DEVCLASS_HDC,                 0x4d36e96aL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
键盘:DEFINE_GUID( GUID_DEVCLASS_KEYBOARD,            0x4d36e96bL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
显示器:DEFINE_GUID( GUID_DEVCLASS_MONITOR,             0x4d36e96eL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
鼠标:DEFINE_GUID( GUID_DEVCLASS_MOUSE,               0x4d36e96fL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
网卡:DEFINE_GUID( GUID_DEVCLASS_NET,                 0x4d36e972L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
网络客户端:DEFINE_GUID( GUID_DEVCLASS_NETCLIENT,           0x4d36e973L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
处理器:DEFINE_GUID( GUID_DEVCLASS_PROCESSOR,           0x50127dc3L, 0x0f36, 0x415e, 0xa6, 0xcc, 0x4c, 0xb3, 0xbe, 0x91, 0x0B, 0x65 );
SCSI适配器:DEFINE_GUID( GUID_DEVCLASS_SCSIADAPTER,         0x4d36e97bL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
声卡:DEFINE_GUID( GUID_DEVCLASS_SOUND,               0x4d36e97cL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
系统设备:DEFINE_GUID( GUID_DEVCLASS_SYSTEM,              0x4d36e97dL, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 );
USB设备:DEFINE_GUID( GUID_DEVCLASS_USB,                 0x36fc9e60L, 0xc465, 0x11cf, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 );
卷(分区):DEFINE_GUID( GUID_DEVCLASS_VOLUME,              0x71a27cddL, 0x812a, 0x11d0, 0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f );

而前面闲聊Windows注册表-神秘值类型中提到的Properties下也有一些GUID项,这些也是微软内部定义好的,有一些是公开的,有一些微软没有明确:

来看看微软的定义(在devpkey.h头文件里),这里列出几个供参考:

//SetupAPI SPDRP_XXX相关的设备属性
DEFINE_DEVPROPKEY(DEVPKEY_Device_DeviceDesc,             0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 2); 
//设备和设备接口属性:
DEFINE_DEVPROPKEY(DEVPKEY_Device_InstanceId,             0x78c34fc8, 0x104a, 0x4aca, 0x9e, 0xa4, 0x52, 0x4d, 0x52, 0x99, 0x6e, 0x57, 256);
//设备状态和问题属性:
DEFINE_DEVPROPKEY(DEVPKEY_Device_DevNodeStatus,          0x4340a6c5, 0x93fa, 0x4706, 0x97, 0x2c, 0x7b, 0x64, 0x80, 0x08, 0xa5, 0xa7, 2); 
//设备安装时间戳属性:
DEFINE_DEVPROPKEY(DEVPKEY_Device_InstallDate,            0x83da6326, 0x97a6, 0x4088, 0x94, 0x53, 0xa1, 0x92, 0x3f, 0x57, 0x3b, 0x29, 100);
//设备驱动的属性:
DEFINE_DEVPROPKEY(DEVPKEY_Device_DriverDate,             0xa8b865dd, 0x2e3d, 0x4094, 0xad, 0x97, 0xe5, 0x93, 0xa7, 0xc, 0x75, 0xd6, 2);
//...

当然还有更多的类似的使用GUID做为键的注册表,比如BCD注册表中也大量使用,就有待大家继续发掘喽!

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表