RegQueryValueEx详解

来源:互联网 发布:java 分布式应用 编辑:程序博客网 时间:2024/05/18 21:11

说到“详解”二字,实在是有点不敢当,但是当我为了找到它的正确使用方法在网上到处奔波的时候,最后给我的都是一些破碎的答案,即便是篇幅丰满的,也是将MSDN上面的东西照搬过来,只不过翻译了一下。

所以我决定将RegQueryValueEx“详解"一下。

头文件:windows.h(一般进行MFC开发的都不用考虑这个问题)

例子描述:判断当前操作系统是否是Windows Xp

HKEY hKey;
DWORD dwType = REG_SZ;
DWORD dwSize;
wchar_t data[MAX_PATH];
bool ret;

using ::wcscmp;

ret = RegOpenKey(HKEY_LOCAL_MACHINE, L"SOFTWARE//Microsoft//Windows NT//CurrentVersion", &hKey) == ERROR_SUCCESS;

ret = RegQueryValueEx(hKey,L"ProductName",
                NULL,
                &dwType,
                (LPBYTE)data,
                &dwSize) == ERROR_SUCCESS;

ret = wcscmp(data, L”Microsoft Windows XP”) == 0;

 

详解:

该例子的完整注册表信息为:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion

在subKey中不能包含有HKEY_LOCAL_MACHINE。

image

在上图中,左边的叫做RegKey,右边的叫做RegValue,只一点必须搞清楚。而图中的"名称”叫做Value name。

所以这就是为什么我们在取值时,必须先通过RegOpenKey来找到Key,然后再通过RegQueryValueEx来找到这个Key中包含的Value。

 

希望我都说清楚了。

原创粉丝点击