この質問 と同様に、OneDriveのシェルアイコンオーバーレイの一部を選択的に無効にします。ただし、レジストリ(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers)には、OneDrive1、OneDrive2、OneDrive3、OneDrive4、OneDrive5のみがリストされています。これらのそれぞれの意味は何ですか?
少し突っ込んだ後、結果は次のとおりです。
不思議なことに、レジストリには上記の各キーの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があります。
より多くの経験/知識を持つ誰かがこれを確認または修正できますか?