我需要使用 C++ 和 win32 API 以编程方式检查安装在计算机中的 ShellIconOverLayIdentifers 总数。
我可以检查以下路径下的标识符以获取总数吗?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers
我需要使用 C++ 和 win32 API 以编程方式检查安装在计算机中的 ShellIconOverLayIdentifers 总数。
我可以检查以下路径下的标识符以获取总数吗?
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers
您可以使用RegQueryInfoKey
此代码经过测试并且可以正常工作:
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
LSTATUS lStat;
HKEY hKey;
DWORD dwSubKeys;
lStat = RegOpenKeyExA(
HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\ShellIconOverlayIdentifiers",
0L, KEY_READ | KEY_WOW64_64KEY, &hKey);
if(lStat == ERROR_SUCCESS)
{
lStat = RegQueryInfoKeyA(
hKey, NULL, NULL, NULL,
&dwSubKeys, NULL, NULL,
NULL, NULL,NULL, NULL, NULL);
printf_s("Subkeys : %u\n", dwSubKeys);
RegCloseKey(hKey);
}
return 0;
}
更新:
根据 JChan 的调查,在 64 位版本的 Windows 上需要以下密钥访问:
KEY_READ | KEY_WOW64_64KEY