답변:
약간의 파고 후 결과는 다음과 같습니다.
궁금한 점이 있으면 레지스트리에 위의 각 키에 대한 CLSID가 있습니다. 그런 다음 해당 COM 객체를로드하고 아이콘 위치 (파일과 이미지 번호)를 묻습니다. 그런 다음 파일을보고 아이콘을 확인할 수 있습니다 (예 : Nirsoft의 IconsExtract 사용). 다음은 VS2013 프로젝트의 샘플 코드입니다.
#include "stdafx.h"
#include <Shlobj.h>
#include <iostream>
#include <tchar.h>
int _tmain(int argc, _TCHAR* argv[]){
LPCOLESTR str_clsid = L"{FB314EE0-A251-47B7-93E1-CDD82E34AF8B}";
HRESULT hr;
CLSID clsid;
IShellIconOverlayIdentifier* pISIOI;
DWORD dwFlags;
int Index;
wchar_t* wszIconFile = new wchar_t[128];
hr = CLSIDFromString(str_clsid, (LPCLSID)&clsid);
CoInitialize(NULL);
hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IShellIconOverlayIdentifier, (void**)&pISIOI);
hr = pISIOI->GetOverlayInfo(wszIconFile, 128, &Index, &dwFlags);
std::wcout << L"Icon Path:\n " << wszIconFile << L" " << Index << std::endl;
pISIOI->Release();
CoUninitialize();
return 0;
}
다음은 업데이트입니다 (레지스트리 편집기의 CLSID에서 설명).
또한 레거시로 보이는 3 개의 CLSID가 있습니다.
더 많은 경험 / 지식을 가진 사람이이를 확인하거나 수정할 수 있습니까?