| Index: chrome/installer/util/google_update_settings.cc
|
| diff --git a/chrome/installer/util/google_update_settings.cc b/chrome/installer/util/google_update_settings.cc
|
| index feac280afb50d454c4e4530bb0af129b95af1f52..71684120983b992cce9c753d10196d57b36fb210 100644
|
| --- a/chrome/installer/util/google_update_settings.cc
|
| +++ b/chrome/installer/util/google_update_settings.cc
|
| @@ -75,6 +75,7 @@ bool WriteGoogleUpdateStrKeyInternal(const AppRegistrationData& app_reg_data,
|
| // presubmit: allow wstring
|
| const std::wstring& value,
|
| const wchar_t* const aggregate) {
|
| + const REGSAM kAccess = KEY_SET_VALUE | KEY_WOW64_32KEY;
|
| if (system_install) {
|
| DCHECK(aggregate);
|
| // Machine installs require each OS user to write a unique key under a
|
| @@ -89,13 +90,12 @@ bool WriteGoogleUpdateStrKeyInternal(const AppRegistrationData& app_reg_data,
|
| base::string16 reg_path(app_reg_data.GetStateMediumKey());
|
| reg_path.append(L"\\");
|
| reg_path.append(name);
|
| - RegKey key(HKEY_LOCAL_MACHINE, reg_path.c_str(), KEY_SET_VALUE);
|
| + RegKey key(HKEY_LOCAL_MACHINE, reg_path.c_str(), kAccess);
|
| key.WriteValue(google_update::kRegAggregateMethod, aggregate);
|
| return (key.WriteValue(uniquename.c_str(), value.c_str()) == ERROR_SUCCESS);
|
| } else {
|
| // User installs are easy: just write the values to HKCU tree.
|
| - RegKey key(HKEY_CURRENT_USER, app_reg_data.GetStateKey().c_str(),
|
| - KEY_SET_VALUE);
|
| + RegKey key(HKEY_CURRENT_USER, app_reg_data.GetStateKey().c_str(), kAccess);
|
| return (key.WriteValue(name, value.c_str()) == ERROR_SUCCESS);
|
| }
|
| }
|
| @@ -226,12 +226,13 @@ bool GoogleUpdateSettings::GetCollectStatsConsentAtLevel(bool system_install) {
|
| RegKey key;
|
| DWORD value = 0;
|
| bool have_value = false;
|
| + const REGSAM kAccess = KEY_QUERY_VALUE | KEY_WOW64_32KEY;
|
|
|
| // For system-level installs, try ClientStateMedium first.
|
| have_value =
|
| system_install &&
|
| key.Open(HKEY_LOCAL_MACHINE, dist->GetStateMediumKey().c_str(),
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS &&
|
| + kAccess) == ERROR_SUCCESS &&
|
| key.ReadValueDW(google_update::kRegUsageStatsField,
|
| &value) == ERROR_SUCCESS;
|
|
|
| @@ -240,7 +241,7 @@ bool GoogleUpdateSettings::GetCollectStatsConsentAtLevel(bool system_install) {
|
| have_value =
|
| key.Open(system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER,
|
| dist->GetStateKey().c_str(),
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS &&
|
| + kAccess) == ERROR_SUCCESS &&
|
| key.ReadValueDW(google_update::kRegUsageStatsField,
|
| &value) == ERROR_SUCCESS;
|
| }
|
| @@ -271,7 +272,8 @@ bool GoogleUpdateSettings::SetCollectStatsConsentAtLevel(bool system_install,
|
| std::wstring reg_path =
|
| system_install ? dist->GetStateMediumKey() : dist->GetStateKey();
|
| RegKey key;
|
| - LONG result = key.Create(root_key, reg_path.c_str(), KEY_SET_VALUE);
|
| + LONG result = key.Create(
|
| + root_key, reg_path.c_str(), KEY_SET_VALUE | KEY_WOW64_32KEY);
|
| if (result != ERROR_SUCCESS) {
|
| LOG(ERROR) << "Failed opening key " << reg_path << " to set "
|
| << google_update::kRegUsageStatsField << "; result: " << result;
|
| @@ -303,13 +305,14 @@ bool GoogleUpdateSettings::SetEULAConsent(
|
| bool consented) {
|
| DCHECK(dist);
|
| const DWORD eula_accepted = consented ? 1 : 0;
|
| + const REGSAM kAccess = KEY_SET_VALUE | KEY_WOW64_32KEY;
|
| std::wstring reg_path = dist->GetStateMediumKey();
|
| bool succeeded = true;
|
| RegKey key;
|
|
|
| // Write the consent value into the product's ClientStateMedium key.
|
| if (key.Create(HKEY_LOCAL_MACHINE, reg_path.c_str(),
|
| - KEY_SET_VALUE) != ERROR_SUCCESS ||
|
| + kAccess) != ERROR_SUCCESS ||
|
| key.WriteValue(google_update::kRegEULAAceptedField,
|
| eula_accepted) != ERROR_SUCCESS) {
|
| succeeded = false;
|
| @@ -325,7 +328,7 @@ bool GoogleUpdateSettings::SetEULAConsent(
|
| BrowserDistribution::CHROME_BINARIES);
|
| reg_path = dist->GetStateMediumKey();
|
| if (key.Create(HKEY_LOCAL_MACHINE, reg_path.c_str(),
|
| - KEY_SET_VALUE) != ERROR_SUCCESS ||
|
| + kAccess) != ERROR_SUCCESS ||
|
| key.WriteValue(google_update::kRegEULAAceptedField,
|
| eula_accepted) != ERROR_SUCCESS) {
|
| succeeded = false;
|
| @@ -697,7 +700,7 @@ base::string16 GoogleUpdateSettings::GetUninstallCommandLine(
|
| RegKey update_key;
|
|
|
| if (update_key.Open(root_key, google_update::kRegPathGoogleUpdate,
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS) {
|
| + KEY_QUERY_VALUE | KEY_WOW64_32KEY) == ERROR_SUCCESS) {
|
| update_key.ReadValue(google_update::kRegUninstallCmdLine, &cmd_line);
|
| }
|
|
|
|
|