4

Подобно этому вопросу, я хотел бы выборочно отключить некоторые наложения значков оболочки OneDrive. Однако в реестре (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers) просто перечислены: OneDrive1, OneDrive2, OneDrive3, OneDrive4, OneDrive5. В чем смысл каждого из них?

2 ответа2

4

После некоторого возни, вот результаты:

  1. Не синхронизируется (красный х)
  2. Синхронизировано - Общий
  3. Синхронизация - Общая
  4. синхронизированные
  5. Синхронизации

Для любопытных, реестр имеет 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

Может ли кто-то с большим опытом / знаниями подтвердить или исправить это?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .