From 605b3d7ac0e7d1a1e12003a5b137fc948395cf25 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Wed, 9 Oct 2013 23:41:48 +0000 Subject: [PATCH] Use KEY_WOW64_32KEY when reading the registry in WindowsToolChain.cpp (PR17033) This exposes a 32-bit view of the registry even when Clang is built as a 64-bit program. Since Visual Studio is a 32-bit application, this is necessary for us to find it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192331 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/WindowsToolChain.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Driver/WindowsToolChain.cpp b/lib/Driver/WindowsToolChain.cpp index 3cbb5c83df..ad84d02f59 100644 --- a/lib/Driver/WindowsToolChain.cpp +++ b/lib/Driver/WindowsToolChain.cpp @@ -126,7 +126,8 @@ static bool getSystemRegistryString(const char *keyPath, const char *valueName, strncpy(partialKey, subKey, partialKeyLength); partialKey[partialKeyLength] = '\0'; HKEY hTopKey = NULL; - lResult = RegOpenKeyEx(hRootKey, partialKey, 0, KEY_READ, &hTopKey); + lResult = RegOpenKeyEx(hRootKey, partialKey, 0, KEY_READ | KEY_WOW64_32KEY, + &hTopKey); if (lResult == ERROR_SUCCESS) { char keyName[256]; int bestIndex = -1; @@ -159,7 +160,8 @@ static bool getSystemRegistryString(const char *keyPath, const char *valueName, strncat(bestName, nextKey, sizeof(bestName) - 1); bestName[sizeof(bestName) - 1] = '\0'; // Open the chosen key path remainder. - lResult = RegOpenKeyEx(hTopKey, bestName, 0, KEY_READ, &hKey); + lResult = RegOpenKeyEx(hTopKey, bestName, 0, KEY_READ | KEY_WOW64_32KEY, + &hKey); if (lResult == ERROR_SUCCESS) { lResult = RegQueryValueEx(hKey, valueName, NULL, &valueType, (LPBYTE)value, &valueSize); @@ -171,7 +173,8 @@ static bool getSystemRegistryString(const char *keyPath, const char *valueName, RegCloseKey(hTopKey); } } else { - lResult = RegOpenKeyEx(hRootKey, subKey, 0, KEY_READ, &hKey); + lResult = RegOpenKeyEx(hRootKey, subKey, 0, KEY_READ | KEY_WOW64_32KEY, + &hKey); if (lResult == ERROR_SUCCESS) { lResult = RegQueryValueEx(hKey, valueName, NULL, &valueType, (LPBYTE)value, &valueSize); -- 2.40.0