[SHELL32] -Cleanup CFSFolder::_LoadDynamicDropTargetHandlerForKey. Inspired by patch by Victor Martinez Calvo. CORE-12799. CID 1401249

svn path=/trunk/; revision=73865
This commit is contained in:
Giannis Adamopoulos 2017-02-20 20:13:22 +00:00
parent 7b0de0e982
commit 9abeb0d9b0

View file

@ -1056,38 +1056,41 @@ HRESULT WINAPI CFSFolder::_LoadDynamicDropTargetHandlerForKey(HKEY hRootKey, LPC
{ {
TRACE("CFSFolder::_LoadDynamicDropTargetHandlerForKey entered\n"); TRACE("CFSFolder::_LoadDynamicDropTargetHandlerForKey entered\n");
WCHAR wszName[MAX_PATH], *pwszClsid; WCHAR wszName[MAX_PATH];
DWORD dwSize = sizeof(wszName); DWORD dwSize = sizeof(wszName);
HRESULT hr; HRESULT hr;
LRESULT res;
res = RegGetValueW(hRootKey, L"shellex\\DropHandler", NULL, RRF_RT_REG_SZ, NULL, wszName, &dwSize);
if (res != ERROR_SUCCESS)
return S_FALSE;
if (RegGetValueW(hRootKey, L"shellex\\DropHandler", NULL, RRF_RT_REG_SZ, NULL, wszName, &dwSize) == ERROR_SUCCESS)
{
CLSID clsid; CLSID clsid;
hr = CLSIDFromString(wszName, &clsid); hr = CLSIDFromString(wszName, &clsid);
if (hr == S_OK) if (FAILED_UNEXPECTEDLY(hr))
pwszClsid = wszName; return hr;
if (m_bGroupPolicyActive) if (m_bGroupPolicyActive)
{ {
if (RegGetValueW(HKEY_LOCAL_MACHINE, res = RegGetValueW(HKEY_LOCAL_MACHINE,
L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved", L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
pwszClsid, wszName,
RRF_RT_REG_SZ, RRF_RT_REG_SZ,
NULL, NULL,
NULL, NULL,
NULL) == ERROR_SUCCESS) NULL);
if (res != ERROR_SUCCESS)
{ {
hr = _LoadDynamicDropTargetHandler(&clsid, pwcsname, ppvOut); ERR("DropHandler extension %S not approved\n", wszName);
}
}
else
{
hr = _LoadDynamicDropTargetHandler(&clsid, pwcsname, ppvOut);
}
}
else
return E_FAIL; return E_FAIL;
}
}
hr = _LoadDynamicDropTargetHandler(&clsid, pwcsname, ppvOut);
if (FAILED_UNEXPECTEDLY(hr))
return hr; return hr;
return S_OK;
} }
HRESULT WINAPI CFSFolder::_LoadDynamicDropTargetHandler(const CLSID *pclsid, LPCWSTR pwcsname, LPVOID *ppvOut) HRESULT WINAPI CFSFolder::_LoadDynamicDropTargetHandler(const CLSID *pclsid, LPCWSTR pwcsname, LPVOID *ppvOut)