From e0ffbeceebfbcc7e38df04be636b8529a4342d09 Mon Sep 17 00:00:00 2001 From: kh1 Date: Tue, 27 Mar 2012 18:05:12 +0200 Subject: Fallback to read the environment from registry as well. Change-Id: Id3666ca179b7033a958fc7e0681d6ee7b2024788 Reviewed-by: Tim Jenssen --- src/libs/installer/packagemanagercore.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 77f9975a1..d30d0087a 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -48,6 +48,7 @@ #include "settings.h" #include "utils.h" +#include #include #include @@ -1117,10 +1118,19 @@ QString PackageManagerCore::environmentVariable(const QString &name) const const LPCWSTR n = (LPCWSTR) name.utf16(); LPTSTR buff = (LPTSTR) malloc(4096 * sizeof(TCHAR)); DWORD getenvret = GetEnvironmentVariable(n, buff, 4096); - const QString actualValue = getenvret != 0 - ? QString::fromUtf16((const unsigned short *) buff) : QString(); + QString value = getenvret != 0 ? QString::fromUtf16((const unsigned short *) buff) : QString(); free(buff); - return actualValue; + + if (value.isEmpty()) { + static QLatin1String userEnvironmentRegistryPath("HKEY_CURRENT_USER\\Environment"); + value = QSettings(userEnvironmentRegistryPath, QSettings::NativeFormat).value(name).toString(); + if (value.isEmpty()) { + static QLatin1String systemEnvironmentRegistryPath("HKEY_LOCAL_MACHINE\\SYSTEM\\" + "CurrentControlSet\\Control\\Session Manager\\Environment"); + value = QSettings(systemEnvironmentRegistryPath, QSettings::NativeFormat).value(name).toString(); + } + } + return value; #else const char *pPath = name.isEmpty() ? 0 : getenv(name.toLatin1()); return pPath ? QLatin1String(pPath) : QString(); -- cgit v1.2.3