Подобно этому вопросу, я хотел бы выборочно отключить некоторые наложения значков оболочки OneDrive. Однако в реестре (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers) просто перечислены: OneDrive1, OneDrive2, OneDrive3, OneDrive4, OneDrive5. В чем смысл каждого из них?
2 ответа
4
После некоторого возни, вот результаты:
- Не синхронизируется (красный х)
- Синхронизировано - Общий
- Синхронизация - Общая
- синхронизированные
- Синхронизации
Для любопытных, реестр имеет CLSID каждого из указанных выше ключей. Затем вы можете загрузить этот COM-объект и спросить, где находится значок (файл плюс номер изображения). Затем вы можете посмотреть в файле, чтобы определить значок (используя, например, Nirsoft's 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;
}
1
Вот обновление (описания взяты из CLSID в редакторе реестра):
- OneDrive1 - ErrorOverlayHandler Class
- OneDrive2 - класс SharedOverlayHandler
- OneDrive3 - класс UpToDateCloudOverlayHandler
- OneDrive4 - класс UpToDatePinnedOverlayHandler
- OneDrive5 - SyncingOverlayHandler Класс
- OneDrive6 - класс ReadOnlyOverlayHandler
- OneDrive7 - класс UpToDateUnpinnedOverlayHandler
Кроме того, есть 3 CLSID, которые кажутся устаревшими:
- {1BF42E4C-4AF4-4CFD-A1A0-CF2960B8F63E} - класс UpToDateOverlayHandler2
- {7AFDFDDB-F914-11E4-8377-6C3BE50D980C} - класс ErrorOverlayHandler2
- {82CA8DE3-01AD-4CEA-9D75-BE4C51810A9E} - класс SyncingOverlayHandler2
Может ли кто-то с большим опытом / знаниями подтвердить или исправить это?