很常用,需要在第四个参数samDesired中添加KEY_WOW64_64KEY选项。更多参考这里
bool GetLocalWinRAR(PVOID data, LPDWORD psize)
{
LONG ret = 0;
DWORD type = 0;
ret = RegGetValue(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\WinRAR"),
_T("exe32"), RRF_RT_REG_SZ, &type, data, psize);
if (ERROR_SUCCESS != ret)
{
HKEY hKey;
DWORD dwValue;
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
_T("SOFTWARE\\WinRAR"), NULL, KEY_WOW64_64KEY| KEY_QUERY_VALUE, &hKey);
if (ERROR_SUCCESS != ret)
{
return false;
}
ret = RegQueryValueEx(hKey, _T("exe64"), NULL, NULL, (LPBYTE)data, psize);
if (ERROR_SUCCESS != ret)
{
return false;
}
RegCloseKey(hKey);;
}
if (ERROR_SUCCESS != ret)
{
return false;
}
return true;
}