0

我需要使用 C++ 和 win32 API 以编程方式检查安装在计算机中的 ShellIconOverLayIdentifers 总数。

我可以检查以下路径下的标识符以获取总数吗?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers
4

1 回答 1

1

您可以使用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

例子

于 2012-08-15T19:21:28.040 回答