| Index: chrome/install_static/install_util.cc
|
| diff --git a/chrome/install_static/install_util.cc b/chrome/install_static/install_util.cc
|
| index 3d49274552d945749152275fd1fd80e6f69ed456..da7e336f817ce2aa8ac5ebebcd50b9f08cbc85fa 100644
|
| --- a/chrome/install_static/install_util.cc
|
| +++ b/chrome/install_static/install_util.cc
|
| @@ -250,10 +250,9 @@ std::wstring GetChromeInstallRegistryPath() {
|
|
|
| bool GetCollectStatsConsentImpl(const std::wstring& exe_path) {
|
| bool enabled = true;
|
| - bool controlled_by_policy = ReportingIsEnforcedByPolicy(&enabled);
|
|
|
| - if (controlled_by_policy && !enabled)
|
| - return false;
|
| + if (ReportingIsEnforcedByPolicy(&enabled))
|
| + return enabled;
|
|
|
| bool system_install = IsSystemInstall(exe_path.c_str());
|
| std::wstring app_guid;
|
| @@ -271,8 +270,9 @@ bool GetCollectStatsConsentImpl(const std::wstring& exe_path) {
|
| std::wstring full_key_path(kRegPathClientStateMedium);
|
| full_key_path.append(1, L'\\');
|
| full_key_path.append(app_guid);
|
| - if (system_install && nt::QueryRegValueDWORD(nt::HKLM, full_key_path.c_str(),
|
| - kRegValueUsageStats, &out_value))
|
| + if (system_install &&
|
| + nt::QueryRegValueDWORD(nt::HKLM, nt::WOW6432, full_key_path.c_str(),
|
| + kRegValueUsageStats, &out_value))
|
| return (out_value == 1);
|
|
|
| // Second, try kRegPathClientState.
|
| @@ -280,8 +280,8 @@ bool GetCollectStatsConsentImpl(const std::wstring& exe_path) {
|
| full_key_path.append(1, L'\\');
|
| full_key_path.append(app_guid);
|
| return (nt::QueryRegValueDWORD((system_install ? nt::HKLM : nt::HKCU),
|
| - full_key_path.c_str(), kRegValueUsageStats,
|
| - &out_value) &&
|
| + nt::WOW6432, full_key_path.c_str(),
|
| + kRegValueUsageStats, &out_value) &&
|
| out_value == 1);
|
| }
|
|
|
| @@ -411,8 +411,8 @@ bool IsMultiInstall(bool is_system_install) {
|
| full_key_path.append(1, L'\\');
|
| full_key_path.append(kAppGuidGoogleChrome);
|
| if (!nt::QueryRegValueSZ((is_system_install ? nt::HKLM : nt::HKCU),
|
| - full_key_path.c_str(), kUninstallArgumentsField,
|
| - &args))
|
| + nt::WOW6432, full_key_path.c_str(),
|
| + kUninstallArgumentsField, &args))
|
| return false;
|
|
|
| return (args.find(L"--multi-install") != std::wstring::npos);
|
| @@ -430,7 +430,7 @@ bool GetCollectStatsInSample() {
|
| std::wstring registry_path = GetChromeInstallRegistryPath();
|
|
|
| DWORD out_value = 0;
|
| - if (!nt::QueryRegValueDWORD(nt::HKCU, registry_path.c_str(),
|
| + if (!nt::QueryRegValueDWORD(nt::HKCU, nt::WOW6432, registry_path.c_str(),
|
| kRegValueChromeStatsSample, &out_value)) {
|
| // If reading the value failed, treat it as though sampling isn't in effect,
|
| // implicitly meaning this install is in the sample.
|
| @@ -443,8 +443,8 @@ bool SetCollectStatsInSample(bool in_sample) {
|
| std::wstring registry_path = GetChromeInstallRegistryPath();
|
|
|
| HANDLE key_handle = INVALID_HANDLE_VALUE;
|
| - if (!nt::CreateRegKey(nt::HKCU, registry_path.c_str(), KEY_SET_VALUE,
|
| - &key_handle)) {
|
| + if (!nt::CreateRegKey(nt::HKCU, registry_path.c_str(),
|
| + KEY_SET_VALUE | KEY_WOW64_32KEY, &key_handle)) {
|
| nt::CloseRegKey(key_handle);
|
| return false;
|
| }
|
| @@ -457,14 +457,14 @@ bool ReportingIsEnforcedByPolicy(bool* metrics_is_enforced_by_policy) {
|
| DWORD value = 0;
|
|
|
| // First, try HKLM.
|
| - if (nt::QueryRegValueDWORD(nt::HKLM, kRegPathChromePolicy,
|
| + if (nt::QueryRegValueDWORD(nt::HKLM, nt::NONE, kRegPathChromePolicy,
|
| kMetricsReportingEnabled, &value)) {
|
| *metrics_is_enforced_by_policy = (value != 0);
|
| return true;
|
| }
|
|
|
| // Second, try HKCU.
|
| - if (nt::QueryRegValueDWORD(nt::HKCU, kRegPathChromePolicy,
|
| + if (nt::QueryRegValueDWORD(nt::HKCU, nt::NONE, kRegPathChromePolicy,
|
| kMetricsReportingEnabled, &value)) {
|
| *metrics_is_enforced_by_policy = (value != 0);
|
| return true;
|
| @@ -640,16 +640,16 @@ void GetChromeChannelName(bool is_per_user_install,
|
| std::wstring full_key_path(kRegPathClientState);
|
| full_key_path.append(1, L'\\');
|
| full_key_path.append(kAppGuidGoogleBinaries);
|
| - channel_available =
|
| - nt::QueryRegValueSZ(is_per_user_install ? nt::HKCU : nt::HKLM,
|
| - full_key_path.c_str(), kRegApField, &value);
|
| + channel_available = nt::QueryRegValueSZ(
|
| + is_per_user_install ? nt::HKCU : nt::HKLM, nt::WOW6432,
|
| + full_key_path.c_str(), kRegApField, &value);
|
| } else {
|
| std::wstring full_key_path(kRegPathClientState);
|
| full_key_path.append(1, L'\\');
|
| full_key_path.append(kAppGuidGoogleChrome);
|
| - channel_available =
|
| - nt::QueryRegValueSZ(is_per_user_install ? nt::HKCU : nt::HKLM,
|
| - full_key_path.c_str(), kRegApField, &value);
|
| + channel_available = nt::QueryRegValueSZ(
|
| + is_per_user_install ? nt::HKCU : nt::HKLM, nt::WOW6432,
|
| + full_key_path.c_str(), kRegApField, &value);
|
| }
|
| if (channel_available) {
|
| static const wchar_t kChromeChannelBetaPattern[] = L"1?1-*";
|
| @@ -698,7 +698,7 @@ std::string GetGoogleUpdateVersion() {
|
| // Consider whether Chromium should connect to Google update to manage
|
| // updates. Should this be returning an empty string for Chromium builds?.
|
| std::wstring update_version;
|
| - if (nt::QueryRegValueSZ(nt::AUTO, kRegPathGoogleUpdate,
|
| + if (nt::QueryRegValueSZ(nt::AUTO, nt::WOW6432, kRegPathGoogleUpdate,
|
| kRegGoogleUpdateVersion, &update_version))
|
| return UTF16ToUTF8(update_version);
|
|
|
|
|