Fix StartupTests.StartsWithDotnetInstallLocation (#6589)

This commit is contained in:
Justin Kotalik 2019-01-14 08:16:48 -08:00 committed by GitHub
parent cbbdeaefd4
commit 3f4622ffe0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 8 deletions

View File

@ -259,13 +259,22 @@ HostFxrResolver::GetAbsolutePathToDotnet(
} }
auto isWow64Process = Environment::IsRunning64BitProcess(); auto isWow64Process = Environment::IsRunning64BitProcess();
const auto platform = isWow64Process? L"x64" : L"x86";
std::wstring regKeySubSection;
if (isWow64Process)
{
regKeySubSection = L"SOFTWARE\\WOW6432Node\\dotnet\\Setup\\InstalledVersions\\x64\\sdk";
}
else
{
regKeySubSection = L"SOFTWARE\\dotnet\\Setup\\InstalledVersions\\x86\\sdk";
}
const auto installationLocation = RegistryKey::TryGetString( const auto installationLocation = RegistryKey::TryGetString(
HKEY_LOCAL_MACHINE, HKEY_LOCAL_MACHINE,
std::wstring(L"SOFTWARE\\dotnet\\Setup\\InstalledVersions\\") + platform + L"\\sdk", regKeySubSection,
L"InstallLocation", L"InstallLocation");
RRF_SUBKEY_WOW6432KEY);
if (installationLocation.has_value()) if (installationLocation.has_value())
{ {

View File

@ -16,11 +16,11 @@ std::optional<DWORD> RegistryKey::TryGetDWORD(HKEY section, const std::wstring&
return dwData; return dwData;
} }
std::optional<std::wstring> RegistryKey::TryGetString(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName, DWORD flags) std::optional<std::wstring> RegistryKey::TryGetString(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName)
{ {
DWORD cbData; DWORD cbData;
if (!CheckReturnValue(RegGetValue(section, subSectionName.c_str(), valueName.c_str(), RRF_RT_REG_SZ | flags, nullptr, nullptr, &cbData) != NO_ERROR)) if (!CheckReturnValue(RegGetValue(section, subSectionName.c_str(), valueName.c_str(), RRF_RT_REG_SZ, nullptr, nullptr, &cbData)))
{ {
return std::nullopt; return std::nullopt;
} }
@ -28,7 +28,7 @@ std::optional<std::wstring> RegistryKey::TryGetString(HKEY section, const std::w
std::wstring data; std::wstring data;
data.resize(cbData / sizeof(wchar_t)); data.resize(cbData / sizeof(wchar_t));
if (!CheckReturnValue(RegGetValue(section, subSectionName.c_str(), valueName.c_str(), RRF_RT_REG_SZ | flags, nullptr, data.data(), &cbData) != NO_ERROR)) if (!CheckReturnValue(RegGetValue(section, subSectionName.c_str(), valueName.c_str(), RRF_RT_REG_SZ, nullptr, data.data(), &cbData)))
{ {
return std::nullopt; return std::nullopt;
} }

View File

@ -13,7 +13,7 @@ public:
std::optional<DWORD> TryGetDWORD(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName, DWORD flags = 0); std::optional<DWORD> TryGetDWORD(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName, DWORD flags = 0);
static static
std::optional<std::wstring> TryGetString(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName, DWORD flags = 0); std::optional<std::wstring> TryGetString(HKEY section, const std::wstring& subSectionName, const std::wstring& valueName);
private: private:
static static