Which OneDrive icon/status is for which Icon Overlay Identifier name?

Similar to this question, I would like to selectively disable some of OneDrive's shell icon overlays. The registry (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers), however, just lists: OneDrive1, OneDrive2, OneDrive3, OneDrive4, OneDrive5. What is the meaning of each of these?


After some poking around, here are the results:

  1. Not syncing (red x)
  2. Synced - Shared
  3. Syncing - Shared
  4. Synced
  5. Syncing

For the curious, the registry has the CLSID of each of the above keys. You can then load that COM object and ask where the icon is located (file plus image number). Then you can look in the file to determine the icon (using e.g. Nirsoft's IconsExtract). Here is some sample code from a VS2013 project:

    #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;
    }

Here is an update (descriptions are taken from the CLSIDs in the Registry Editor):

  • OneDrive1 – ErrorOverlayHandler Class
  • OneDrive2 – SharedOverlayHandler Class
  • OneDrive3 – UpToDateCloudOverlayHandler Class
  • OneDrive4 – UpToDatePinnedOverlayHandler Class
  • OneDrive5 – SyncingOverlayHandler Class
  • OneDrive6 – ReadOnlyOverlayHandler Class
  • OneDrive7 – UpToDateUnpinnedOverlayHandler Class

In addition, there are 3 CLSIDs that seem to be legacy:

  • {1BF42E4C-4AF4-4CFD-A1A0-CF2960B8F63E} – UpToDateOverlayHandler2 Class
  • {7AFDFDDB-F914-11E4-8377-6C3BE50D980C} – ErrorOverlayHandler2 Class
  • {82CA8DE3-01AD-4CEA-9D75-BE4C51810A9E} – SyncingOverlayHandler2 Class

Can someone with more experience/knowledge confirm or correct this?