Commit 661bbbd0 authored by Hans Leidekker's avatar Hans Leidekker Committed by Alexandre Julliard

shell32: Implement ASSOCSTR_SHELLEXTENSION.

parent 6f15ca3e
......@@ -429,7 +429,7 @@ static HRESULT WINAPI IQueryAssociations_fnGetString(
HRESULT hr;
WCHAR path[MAX_PATH];
TRACE("(%p,0x%8x,0x%8x,%s,%p,%p)\n", This, cfFlags, str,
TRACE("(%p,0x%08x,%u,%s,%p,%p)\n", This, cfFlags, str,
debugstr_w(pszExtra), pszOut, pcchOut);
if (cfFlags & cfUnimplemented)
......@@ -616,6 +616,30 @@ get_friendly_name_fail:
HeapFree(GetProcessHeap(), 0, pszFileType);
return hr;
}
case ASSOCSTR_SHELLEXTENSION:
{
static const WCHAR shellexW[] = {'S','h','e','l','l','E','x','\\',0};
WCHAR keypath[sizeof(shellexW) / sizeof(shellexW[0]) + 39], guid[39];
CLSID clsid;
HKEY hkey;
DWORD size;
LONG ret;
hr = CLSIDFromString(pszExtra, &clsid);
if (FAILED(hr)) return hr;
strcpyW(keypath, shellexW);
strcatW(keypath, pszExtra);
ret = RegOpenKeyExW(This->hkeySource, keypath, 0, KEY_READ, &hkey);
if (ret) return HRESULT_FROM_WIN32(ret);
size = sizeof(guid);
ret = RegGetValueW(hkey, NULL, NULL, RRF_RT_REG_SZ, NULL, guid, &size);
RegCloseKey(hkey);
if (ret) return HRESULT_FROM_WIN32(ret);
return ASSOC_ReturnString(pszOut, pcchOut, guid, size / sizeof(WCHAR));
}
default:
FIXME("assocstr %d unimplemented!\n", str);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment