如何检查安装在计算机总数ShellIconOverLayIdentifers使用C++

问题描述:

我需要检查安装在计算机编程方式使用C++和Win32 API总数ShellIconOverLayIdentifers。如何检查安装在计算机总数ShellIconOverLayIdentifers使用C++

我可以检查以下路径下的标识符,以获得总计数?

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\ShellIconOverlayIdentifiers 
+1

IIRC,让你知道有多少处理器,但每次他们正在使用的不是有多少。 (我前一段时间的意见是,答案总是“太多”,如果可能的话要做点别的事情,但当然,“如果可能”并不总是成功)。 – 2012-08-15 19:20:57

+0

感谢乔恩的有效信息 – JChan 2012-08-15 19:59:12

+0

不一定有效,因此使得它与“IIRC”,而不是回答的评论。 – 2012-08-15 20:07:52

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

UPDATE:

基于JChan的调查,以下键访问需要在64位版本的Windows:

KEY_READ | KEY_WOW64_64KEY 

Example

+0

@rkosgi感谢您的帮助,我也下ShellIconOverlayIdentifiers 10个按键,但上面的代码返回子键的数量是2。如果我给的路径,直到资源管理器,其返回多个子项,但不是全部。我试图找出为什么它没有得到所有的子密钥 – JChan 2012-08-15 20:10:29

+0

@JChan:检查我更新的答案。此代码运行良好。它显示11在我的情况。 – rkosegi 2012-08-15 20:26:09

+0

我在Windows XP中测试了它的代码。但win7 64位,相同的代码无法正常工作。 – JChan 2012-08-15 20:47:47