summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemTools.cxx
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2011-01-07 12:31:56 (GMT)
committerDavid Cole <david.cole@kitware.com>2011-01-07 12:40:07 (GMT)
commit4b05a213028b09660d4651b46a1cc3f102c8ad97 (patch)
tree44aa9ceddea74724170d8cacd2bc97d955353df4 /Source/kwsys/SystemTools.cxx
parentfd4875b4c030e1ac4f2cb08164e581cecde5af1e (diff)
downloadCMake-4b05a213028b09660d4651b46a1cc3f102c8ad97.zip
CMake-4b05a213028b09660d4651b46a1cc3f102c8ad97.tar.gz
CMake-4b05a213028b09660d4651b46a1cc3f102c8ad97.tar.bz2
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>
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r--Source/kwsys/SystemTools.cxx8
1 files changed, 8 insertions, 0 deletions
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;