summaryrefslogtreecommitdiffstats
path: root/src/libs/installer/packagemanagercore.cpp
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@nokia.com>2012-03-27 18:05:12 +0200
committerTim Jenssen <tim.jenssen@nokia.com>2012-03-27 18:06:45 +0200
commite0ffbeceebfbcc7e38df04be636b8529a4342d09 (patch)
tree1b3a8aaf4093e72204d9c23a5ec279eb4ae5d82c /src/libs/installer/packagemanagercore.cpp
parentbc6092a49b671e048ac008d5e895ff66c1b461ea (diff)
Fallback to read the environment from registry as well.
Change-Id: Id3666ca179b7033a958fc7e0681d6ee7b2024788 Reviewed-by: Tim Jenssen <tim.jenssen@nokia.com>
Diffstat (limited to 'src/libs/installer/packagemanagercore.cpp')
-rw-r--r--src/libs/installer/packagemanagercore.cpp16
1 files changed, 13 insertions, 3 deletions
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 <QtCore/QSettings>
#include <QtCore/QTemporaryFile>
#include <QtGui/QDesktopServices>
@@ -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();