From 4b05a213028b09660d4651b46a1cc3f102c8ad97 Mon Sep 17 00:00:00 2001 From: David Cole Date: Fri, 7 Jan 2011 07:31:56 -0500 Subject: 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 Signed-off-by: Axel Gembe --- Source/kwsys/SystemTools.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx index cef2de6..ab90db3 100644 --- a/Source/kwsys/SystemTools.cxx +++ b/Source/kwsys/SystemTools.cxx @@ -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; -- cgit v0.12