diff options
author | David Cole <david.cole@kitware.com> | 2011-01-07 12:31:56 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2011-01-07 12:40:07 (GMT) |
commit | 4b05a213028b09660d4651b46a1cc3f102c8ad97 (patch) | |
tree | 44aa9ceddea74724170d8cacd2bc97d955353df4 /Source/kwsys/SystemTools.cxx | |
parent | fd4875b4c030e1ac4f2cb08164e581cecde5af1e (diff) | |
download | CMake-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.cxx | 8 |
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; |