diff --git a/dll/win32/shell32/folders/CFSFolder.cpp b/dll/win32/shell32/folders/CFSFolder.cpp index 5b5ef06b3fd..9bec68f9273 100644 --- a/dll/win32/shell32/folders/CFSFolder.cpp +++ b/dll/win32/shell32/folders/CFSFolder.cpp @@ -346,7 +346,17 @@ HRESULT CFSExtractIcon_CreateInstance(IShellFolder * psf, LPCITEMIDLIST pidl, RE LPCWSTR pExtension = ExtensionFromPidl(pidl, extbuf, _countof(extbuf)); HKEY hkey = pExtension ? OpenKeyFromFileType(pExtension, L"DefaultIcon") : NULL; if (!hkey) - WARN("Could not open DefaultIcon key!\n"); + { + DWORD dwSize = sizeof(wTemp); + if (RegGetValueW(HKEY_CLASSES_ROOT, pExtension, L"PerceivedType", RRF_RT_REG_SZ, NULL, + wTemp, &dwSize) == ERROR_SUCCESS) + { + WCHAR szSubKey[MAX_PATH]; + StringCchPrintfW(szSubKey, _countof(szSubKey), + L"SystemFileAssociations\\%s\\DefaultIcon", wTemp); + RegOpenKeyExW(HKEY_CLASSES_ROOT, szSubKey, 0, KEY_READ, &hkey); + } + } DWORD dwSize = sizeof(wTemp); if (hkey && !SHQueryValueExW(hkey, NULL, NULL, NULL, wTemp, &dwSize))