mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 02:05:50 +00:00
- Fix multiple bugs in HCR_GetDefaultVerbW
svn path=/trunk/; revision=35641
This commit is contained in:
parent
fac43bb581
commit
d0e1f5701b
1 changed files with 14 additions and 8 deletions
|
@ -133,7 +133,7 @@ BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD l
|
||||||
LONG size;
|
LONG size;
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
|
|
||||||
TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest);
|
TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest);
|
||||||
|
|
||||||
if (szVerb)
|
if (szVerb)
|
||||||
{
|
{
|
||||||
|
@ -143,13 +143,13 @@ BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD l
|
||||||
|
|
||||||
size=len;
|
size=len;
|
||||||
*szDest='\0';
|
*szDest='\0';
|
||||||
if (!RegQueryValueW(hkeyClass, swShell, szDest, &size) && *szDest)
|
if (!RegQueryValueW(hkeyClass, L"shell", szDest, &size) && *szDest)
|
||||||
{
|
{
|
||||||
/* The MSDN says to first try the default verb */
|
/* The MSDN says to first try the default verb */
|
||||||
lstrcpyW(sTemp, swShell);
|
lstrcpyW(sTemp, swShell);
|
||||||
lstrcatW(sTemp, szDest);
|
lstrcatW(sTemp, szDest);
|
||||||
lstrcatW(sTemp, swCommand);
|
lstrcatW(sTemp, swCommand);
|
||||||
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, 0, &hkey))
|
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, KEY_READ, &hkey))
|
||||||
{
|
{
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hkey);
|
||||||
TRACE("default verb=%s\n", debugstr_w(szDest));
|
TRACE("default verb=%s\n", debugstr_w(szDest));
|
||||||
|
@ -161,7 +161,7 @@ BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD l
|
||||||
lstrcpyW(sTemp, swShell);
|
lstrcpyW(sTemp, swShell);
|
||||||
lstrcatW(sTemp, swOpen);
|
lstrcatW(sTemp, swOpen);
|
||||||
lstrcatW(sTemp, swCommand);
|
lstrcatW(sTemp, swCommand);
|
||||||
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, 0, &hkey))
|
if (!RegOpenKeyExW(hkeyClass, sTemp, 0, KEY_READ, &hkey))
|
||||||
{
|
{
|
||||||
RegCloseKey(hkey);
|
RegCloseKey(hkey);
|
||||||
lstrcpynW(szDest, swOpen, len);
|
lstrcpynW(szDest, swOpen, len);
|
||||||
|
@ -170,14 +170,20 @@ BOOL HCR_GetDefaultVerbW( HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD l
|
||||||
}
|
}
|
||||||
|
|
||||||
/* and then just use the first verb on Windows >= 2000 */
|
/* and then just use the first verb on Windows >= 2000 */
|
||||||
if (!RegEnumKeyW(hkeyClass, 0, szDest, len) && *szDest)
|
if (!RegOpenKeyExW(hkeyClass, L"shell", 0, KEY_READ, &hkey))
|
||||||
{
|
{
|
||||||
TRACE("default verb=first verb=%s\n", debugstr_w(szDest));
|
if (!RegEnumKeyW(hkey, 0, szDest, len) && *szDest)
|
||||||
return TRUE;
|
{
|
||||||
|
TRACE("default verb=first verb=%s\n", debugstr_w(szDest));
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
RegCloseKey(hkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TRACE("no default verb!\n");
|
TRACE("no default verb!\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue