diff --git a/reactos/dll/win32/shell32/folders/CNetFolder.cpp b/reactos/dll/win32/shell32/folders/CNetFolder.cpp index 81e3a99f9cd..d0a9d3c810f 100644 --- a/reactos/dll/win32/shell32/folders/CNetFolder.cpp +++ b/reactos/dll/win32/shell32/folders/CNetFolder.cpp @@ -417,8 +417,11 @@ HRESULT WINAPI CNetFolder::GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CH if (IsEqualIID(riid, IID_IContextMenu) && (cidl >= 1)) { - IContextMenu * pCm = NULL; - hr = CDefFolderMenu_Create2(pidlRoot, hwndOwner, cidl, apidl, static_cast(this), NULL, 0, NULL, &pCm); + IContextMenu * pCm = NULL; + HKEY hkey; + UINT cKeys = 0; + AddClassKeyToArray(L"Folder", &hkey, &cKeys); + hr = CDefFolderMenu_Create2(pidlRoot, hwndOwner, cidl, apidl, static_cast(this), NULL, cKeys, &hkey, &pCm); pObj = pCm; } else if (IsEqualIID(riid, IID_IDataObject) && (cidl >= 1)) diff --git a/reactos/dll/win32/shell32/shfldr.h b/reactos/dll/win32/shell32/shfldr.h index 54ed1b45a2a..a8543e688d4 100644 --- a/reactos/dll/win32/shell32/shfldr.h +++ b/reactos/dll/win32/shell32/shfldr.h @@ -83,6 +83,8 @@ static __inline int SHELL32_GUIDToStringW (REFGUID guid, LPWSTR str) void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags); BOOL SHELL_FS_HideExtension(LPWSTR pwszPath); +void AddClassKeyToArray(const WCHAR * szClass, HKEY* array, UINT* cKeys); + #ifdef __cplusplus HRESULT inline SHSetStrRet(LPSTRRET pStrRet, DWORD resId) diff --git a/reactos/dll/win32/shell32/shlfolder.cpp b/reactos/dll/win32/shell32/shlfolder.cpp index d632fb085ed..cf1987c1344 100644 --- a/reactos/dll/win32/shell32/shlfolder.cpp +++ b/reactos/dll/win32/shell32/shlfolder.cpp @@ -462,6 +462,20 @@ HRESULT SHELL32_CompareDetails(IShellFolder2* isf, LPARAM lParam, LPCITEMIDLIST return MAKE_COMPARE_HRESULT(ret); } +void AddClassKeyToArray(const WCHAR * szClass, HKEY* array, UINT* cKeys) +{ + if (*cKeys >= 16) + return; + + HKEY hkey; + LSTATUS result = RegOpenKeyExW(HKEY_CLASSES_ROOT, szClass, 0, KEY_READ | KEY_QUERY_VALUE, &hkey); + if (result != ERROR_SUCCESS) + return; + + array[*cKeys] = hkey; + *cKeys += 1; +} + /*********************************************************************** * SHCreateLinks *