aboutsummaryrefslogtreecommitdiffstats
path: root/src/shared/registryaccess
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2016-06-09 12:07:01 +0200
committerEike Ziller <eike.ziller@qt.io>2016-06-09 12:07:01 +0200
commit1681066c37e545da33a3c428b9cfec7974c8c627 (patch)
tree11724c838368746bb062e32e853b85dac80b3e45 /src/shared/registryaccess
parentae7e03d51f172ed44f4cbaeaa61299a1ddc13bc7 (diff)
parentcda5f70cd979226b3987d8c9a02bedb4323900a0 (diff)
Merge remote-tracking branch 'origin/4.0'
Conflicts: src/plugins/debugger/watchdata.cpp src/plugins/debugger/watchdata.h src/shared/qbs Change-Id: I19b338b316d9c4c046074eb85b3fec79e86e6c32
Diffstat (limited to 'src/shared/registryaccess')
-rw-r--r--src/shared/registryaccess/registryaccess.cpp11
-rw-r--r--src/shared/registryaccess/registryaccess.h10
2 files changed, 21 insertions, 0 deletions
diff --git a/src/shared/registryaccess/registryaccess.cpp b/src/shared/registryaccess/registryaccess.cpp
index 8acf5eeb90..e37185e507 100644
--- a/src/shared/registryaccess/registryaccess.cpp
+++ b/src/shared/registryaccess/registryaccess.cpp
@@ -98,6 +98,7 @@ bool openRegistryKey(HKEY category, // HKEY_LOCAL_MACHINE, etc.
const WCHAR *key,
bool readWrite,
HKEY *keyHandle,
+ AccessMode mode,
QString *errorMessage)
{
Q_UNUSED(debuggerRegistryKeyC); // avoid warning from MinGW
@@ -105,6 +106,16 @@ bool openRegistryKey(HKEY category, // HKEY_LOCAL_MACHINE, etc.
REGSAM accessRights = KEY_READ;
if (readWrite)
accessRights |= KEY_SET_VALUE;
+ switch (mode) {
+ case RegistryAccess::DefaultAccessMode:
+ break;
+ case RegistryAccess::Registry32Mode:
+ accessRights |= KEY_WOW64_32KEY;
+ break;
+ case RegistryAccess::Registry64Mode:
+ accessRights |= KEY_WOW64_64KEY;
+ break;
+ }
const LONG rc = RegOpenKeyEx(category, key, 0, accessRights, keyHandle);
if (rc != ERROR_SUCCESS) {
*errorMessage = msgFunctionFailed("RegOpenKeyEx", rc);
diff --git a/src/shared/registryaccess/registryaccess.h b/src/shared/registryaccess/registryaccess.h
index f8620614c7..26c5032767 100644
--- a/src/shared/registryaccess/registryaccess.h
+++ b/src/shared/registryaccess/registryaccess.h
@@ -36,6 +36,12 @@
namespace RegistryAccess {
+enum AccessMode {
+ DefaultAccessMode,
+ Registry32Mode = 0x2, // Corresponds to QSettings::Registry32Format (5.7)
+ Registry64Mode = 0x4 // Corresponds to QSettings::Registry64Format (5.7)
+};
+
static const char *debuggerApplicationFileC = "qtcdebugger";
static const WCHAR *debuggerRegistryKeyC = L"Software\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug";
static const WCHAR *debuggerRegistryValueNameC = L"Debugger";
@@ -67,8 +73,12 @@ bool openRegistryKey(HKEY category, // HKEY_LOCAL_MACHINE, etc.
const WCHAR *key,
bool readWrite,
HKEY *keyHandle,
+ AccessMode mode,
QString *errorMessage);
+inline bool openRegistryKey(HKEY category, const WCHAR *key, bool readWrite, HKEY *keyHandle, QString *errorMessage)
+{ return openRegistryKey(category, key, readWrite, keyHandle, DefaultAccessMode, errorMessage); }
+
QString debuggerCall(const QString &additionalOption = QString());
bool isRegistered(HKEY handle, const QString &call, QString *errorMessage, QString *oldDebugger = 0);