2012-08-15 2 views
0

C++ 및 win32 API를 사용하여 프로그래밍 방식으로 컴퓨터에 설치된 ShellIconOverLayIdentifers의 총 수를 확인해야합니다.총 수를 확인하는 방법 C++을 사용하여 컴퓨터에 설치된 ShellIconOverLayIdentifers

아래의 경로에서 식별자를 확인하여 총 개수를 확인할 수 있습니까?

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

IIRC. (나는 언젠가 그 대답이 항상 "너무 많다"며 가능하다면 다른 것을 할 생각으로 왔지만, "가능한 모든 경우"가 항상 잘 풀리는 것은 아니다). –

+0

유효한 정보에 대한 감사합니다. – JChan

+0

반드시 유효하지는 않으므로 답변이 아닌 "IIRC"로 의견을 작성하십시오. –

답변

1

당신은 RegQueryInfoKey

이 코드는 테스트

및 작업을 사용할 수 있습니다

UPDATE가
#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의 비트 버전 :

당신이 얼마나 많은 핸들러를 알고 있지만, 각 그들이 사용하고 있지 얼마나 많은 수 363,210
KEY_READ | KEY_WOW64_64KEY 

Example

+0

@rkosgi 도움을 주셔서 감사합니다. ShellIconOverlayIdentifiers 아래에 10 개의 키가 있지만 위의 코드는 하위 키의 수를 2로 반환합니다. 탐색기까지 경로를 지정하면 그 하위 키는 모두 반환되지 만 반환됩니다. 나는 왜 모든 하위 키를 얻지 못하는지 알아 내려고 노력 중이다 – JChan

+0

@JChan : 내 업데이트 된 답변을 확인하십시오.이 코드는 잘 작동합니다. 제 경우에는 11 개가 표시됩니다. – rkosegi

+0

나는 Windows XP에서 코드를 테스트했다. 하지만 win7 64 비트, 같은 코드가 작동하지 않았다. – JChan

관련 문제