Fix WOW64 registry mode on Windows 2000 (#10759)
CMake fails to find any registry paths on Windows 2000: according to regmon it fails with an access denied error. I double checked all the access rights and they are fine. After checking the access modes on MSDN I found that it says KEY_WOW64_32KEY / KEY_WOW64_64KEY are not supported on Windows 2000. CMake does not check if the current system supports Wow64 before applying these flags. This commit adds a check for IsWow64Process in kernel32.dll before adding these flags. Author: Axel Gembe <ago@bastart.eu.org> Signed-off-by: Axel Gembe <ago@bastart.eu.org>
This commit is contained in:
parent
fd4875b4c0
commit
4b05a21302
|
@ -563,6 +563,14 @@ void SystemTools::ReplaceString(kwsys_stl::string& source,
|
|||
static DWORD SystemToolsMakeRegistryMode(DWORD mode,
|
||||
SystemTools::KeyWOW64 view)
|
||||
{
|
||||
// only add the modes when on a system that supports Wow64.
|
||||
static void *wow64p = GetProcAddress(GetModuleHandle("kernel32"),
|
||||
"IsWow64Process");
|
||||
if(wow64p == NULL)
|
||||
{
|
||||
return mode;
|
||||
}
|
||||
|
||||
if(view == SystemTools::KeyWOW64_32)
|
||||
{
|
||||
return mode | KWSYS_ST_KEY_WOW64_32KEY;
|
||||
|
|
Loading…
Reference in New Issue