Index: chrome/installer/util/installation_state.cc |
diff --git a/chrome/installer/util/installation_state.cc b/chrome/installer/util/installation_state.cc |
index 91631b147375e6e9e8d51635141ef8fc183257b8..718e44a96f77d4100f49fc195da2c6827d6f6047 100644 |
--- a/chrome/installer/util/installation_state.cc |
+++ b/chrome/installer/util/installation_state.cc |
@@ -36,7 +36,8 @@ bool ProductState::Initialize(bool system_install, |
// static |
bool ProductState::InitializeCommands(const base::win::RegKey& version_key, |
AppCommands* commands) { |
- static const DWORD kAccess = KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE; |
+ static const DWORD kAccess = |
+ KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE | KEY_WOW64_32KEY; |
base::win::RegKey commands_key; |
if (commands_key.Open(version_key.Handle(), google_update::kRegCommandsKey, |
@@ -47,6 +48,7 @@ bool ProductState::InitializeCommands(const base::win::RegKey& version_key, |
bool ProductState::Initialize(bool system_install, |
BrowserDistribution* distribution) { |
+ static const DWORD kAccess = KEY_QUERY_VALUE | KEY_WOW64_32KEY; |
const std::wstring version_key(distribution->GetVersionKey()); |
const std::wstring state_key(distribution->GetStateKey()); |
const HKEY root_key = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; |
@@ -56,8 +58,7 @@ bool ProductState::Initialize(bool system_install, |
Clear(); |
// Read from the Clients key. |
- if (key.Open(root_key, version_key.c_str(), |
- KEY_QUERY_VALUE) == ERROR_SUCCESS) { |
+ if (key.Open(root_key, version_key.c_str(), kAccess) == ERROR_SUCCESS) { |
base::string16 version_str; |
if (key.ReadValue(google_update::kRegVersionField, |
&version_str) == ERROR_SUCCESS) { |
@@ -82,8 +83,7 @@ bool ProductState::Initialize(bool system_install, |
} |
// Read from the ClientState key. |
- if (key.Open(root_key, state_key.c_str(), |
- KEY_QUERY_VALUE) == ERROR_SUCCESS) { |
+ if (key.Open(root_key, state_key.c_str(), kAccess) == ERROR_SUCCESS) { |
std::wstring setup_path; |
std::wstring uninstall_arguments; |
// "ap" will be absent if not managed by Google Update. |
@@ -124,8 +124,8 @@ bool ProductState::Initialize(bool system_install, |
// Read from the ClientStateMedium key. Values here override those in |
// ClientState. |
if (system_install && |
- key.Open(root_key, distribution->GetStateMediumKey().c_str(), |
- KEY_QUERY_VALUE) == ERROR_SUCCESS) { |
+ key.Open(root_key, distribution->GetStateMediumKey().c_str(), kAccess) == |
+ ERROR_SUCCESS) { |
DWORD dword_value = 0; |
if (key.ReadValueDW(google_update::kRegUsageStatsField, |