注册表操作总结
MSDN设备GUID定义:
系统定义的设备设置类保留供系统使用
系统定义的设备设置类可供供应商使用
一、根据实际查询(子键可能随时变动)
Intel VGA
4d36e968-e325-11ce-bfc1-08002be10318}\0000
intel audio
4d36e96c-e325-11ce-bfc1-08002be10318}\0000
Realtek audio
4d36e96c-e325-11ce-bfc1-08002be10318}\0001
LAN
4d36e972-e325-11ce-bfc1-08002be10318}\0001
WLAN
4d36e972-e325-11ce-bfc1-08002be10318}\0002
BT
e0cbf06c-cd8b-4647-bb8a-263b43f0f974}\0000
smbus
4d36e97d-e325-11ce-bfc1-08002be10318}\0046
ME
4d36e97d-e325-11ce-bfc1-08002be10318}\0045
usb
36FC9E60-C465-11CF-8056-444553540000}\0011
通过注册表遍历查找USB3.0驱动
二、audio版本信息
三、注册表读取
方法1.注册表案例
// bios.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "windows.h"
#pragma warning(disable:4996)
#pragma comment (lib,"Advapi32.lib")
int main(int argc, char* argv[])
{
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("SYSTEM\\ControlSet001\\Control\\Class\\{4d36e96c-e325-11ce-bfc1-08002be10318}\\0001");
//访问注册表,hKEY则保存此函数所打开的键的句柄
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY))
{
char DriverVersion[256];
char DriverDate[256];
DWORD dwSzType = REG_SZ;
DWORD dwSizeDriverVersion = sizeof(DriverVersion);
DWORD dwSizeDriverDate = sizeof(DriverDate);
if (RegQueryValueEx(hKEY, "DriverVersion", 0, &dwSzType, (LPBYTE)&DriverVersion, &dwSizeDriverVersion) != ERROR_SUCCESS)
{
printf("Error: unable to query information about the registry");
}
if (RegQueryValueEx(hKEY, "DriverDate", 0, &dwSzType, (LPBYTE)&DriverDate, &dwSizeDriverDate) != ERROR_SUCCESS)
{
printf("Error: unable to query information about the registry");
}
//程序结束,关闭打开的hKEY
RegCloseKey(hKEY);
printf("%s %s\n", DriverVersion, DriverDate);
return 0;
}
else
{
printf("Error: unable to query information about the registry");
return 1;
}
}
源代码: http://download.csdn.net/detail/greless/9861226
方法2.devcon工具
指定设备ID,然后得到最后一个DriverNode,通过管道获得版本日期,注意&之间有^
devcon.exe drivernodes VEN_8086^&DEV_8C31