[PATCH 5/6] combase: Make ProgIDFromCLSID() work in WoW64 setup.
Huw Davies
huw at codeweavers.com
Wed Mar 16 04:47:32 CDT 2022
On Wed, Mar 09, 2022 at 10:45:58AM +0300, Dmitry Timoshkov wrote:
> Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
> ---
> dlls/combase/combase.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/dlls/combase/combase.c b/dlls/combase/combase.c
> index 3ffd08ab635..fb8f453661f 100644
> --- a/dlls/combase/combase.c
> +++ b/dlls/combase/combase.c
> @@ -315,7 +315,7 @@ HRESULT open_key_for_clsid(REFCLSID clsid, const WCHAR *keyname, REGSAM access,
>
> lstrcpyW(path, clsidW);
> StringFromGUID2(clsid, path + lstrlenW(clsidW), CHARS_IN_GUID);
> - res = open_classes_key(HKEY_CLASSES_ROOT, path, keyname ? KEY_READ : access, &key);
> + res = open_classes_key(HKEY_CLASSES_ROOT, path, access, &key);
> if (res == ERROR_FILE_NOT_FOUND)
> return REGDB_E_CLASSNOTREG;
> else if (res != ERROR_SUCCESS)
While I think this and the following patch are fine, it would be better
if this change and the one in the last hunk were a separate patch.
> @@ -2322,7 +2328,7 @@ HRESULT WINAPI CoGetPSClsid(REFIID riid, CLSID *pclsid)
>
> hr = get_ps_clsid_from_registry(path, 0, pclsid);
As you're adding KEY_READ below, shouldn't it also be passed here?
> if (FAILED(hr) && (opposite == KEY_WOW64_32KEY || (IsWow64Process(GetCurrentProcess(), &is_wow64) && is_wow64)))
> - hr = get_ps_clsid_from_registry(path, opposite, pclsid);
> + hr = get_ps_clsid_from_registry(path, opposite | KEY_READ, pclsid);
>
> if (hr == S_OK)
> TRACE("() Returning CLSID %s\n", debugstr_guid(pclsid));
Huw.
More information about the wine-devel
mailing list