diff options
author | Eike Ziller <eike.ziller@qt.io> | 2016-06-09 12:07:01 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2016-06-09 12:07:01 +0200 |
commit | 1681066c37e545da33a3c428b9cfec7974c8c627 (patch) | |
tree | 11724c838368746bb062e32e853b85dac80b3e45 /src/shared/registryaccess | |
parent | ae7e03d51f172ed44f4cbaeaa61299a1ddc13bc7 (diff) | |
parent | cda5f70cd979226b3987d8c9a02bedb4323900a0 (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.cpp | 11 | ||||
-rw-r--r-- | src/shared/registryaccess/registryaccess.h | 10 |
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); |