| Index: chrome/installer/gcapi/gcapi.cc
|
| diff --git a/chrome/installer/gcapi/gcapi.cc b/chrome/installer/gcapi/gcapi.cc
|
| index 17974981c04176aef6b17fdb603bd7859dda3a57..3d73af0ba6ef66234ab8c57217b0d430982fcd2c 100644
|
| --- a/chrome/installer/gcapi/gcapi.cc
|
| +++ b/chrome/installer/gcapi/gcapi.cc
|
| @@ -203,7 +203,9 @@ bool CanReOfferChrome(BOOL set_flag) {
|
|
|
| bool IsChromeInstalled(HKEY root_key) {
|
| RegKey key;
|
| - return key.Open(root_key, kChromeRegClientsKey, KEY_READ) == ERROR_SUCCESS &&
|
| + return key.Open(root_key,
|
| + kChromeRegClientsKey,
|
| + KEY_READ | KEY_WOW64_32KEY) == ERROR_SUCCESS &&
|
| key.HasValue(kChromeRegVersion);
|
| }
|
|
|
| @@ -211,7 +213,7 @@ bool IsChromeInstalled(HKEY root_key) {
|
| bool RegKeyHasC1F(HKEY root, const wchar_t* subkey) {
|
| RegKey key;
|
| DWORD value;
|
| - return key.Open(root, subkey, KEY_READ) == ERROR_SUCCESS &&
|
| + return key.Open(root, subkey, KEY_READ | KEY_WOW64_32KEY) == ERROR_SUCCESS &&
|
| key.ReadValueDW(kC1FKey, &value) == ERROR_SUCCESS &&
|
| value == static_cast<DWORD>(1);
|
| }
|
| @@ -276,7 +278,8 @@ bool VerifyHKLMAccess() {
|
| HKEY key = NULL;
|
|
|
| if (::RegCreateKeyEx(HKEY_LOCAL_MACHINE, kGCAPITempKey, 0, NULL,
|
| - REG_OPTION_NON_VOLATILE, KEY_READ | KEY_WRITE, NULL,
|
| + REG_OPTION_NON_VOLATILE,
|
| + KEY_READ | KEY_WRITE | KEY_WOW64_32KEY, NULL,
|
| &key, &disposition) == ERROR_SUCCESS) {
|
| if (::RegSetValueEx(key, str, 0, REG_SZ, (LPBYTE)str,
|
| (DWORD)lstrlen(str)) == ERROR_SUCCESS) {
|
| @@ -595,8 +598,9 @@ int __stdcall GoogleChromeDaysSinceLastRun() {
|
|
|
| if (IsChromeInstalled(HKEY_LOCAL_MACHINE) ||
|
| IsChromeInstalled(HKEY_CURRENT_USER)) {
|
| - RegKey client_state(
|
| - HKEY_CURRENT_USER, kChromeRegClientStateKey, KEY_QUERY_VALUE);
|
| + RegKey client_state(HKEY_CURRENT_USER,
|
| + kChromeRegClientStateKey,
|
| + KEY_QUERY_VALUE | KEY_WOW64_32KEY);
|
| if (client_state.Valid()) {
|
| std::wstring last_run;
|
| int64 last_run_value = 0;
|
| @@ -748,8 +752,9 @@ BOOL __stdcall CanOfferRelaunch(const wchar_t** partner_brandcode_list,
|
| // relaunch offer for the current user;
|
| RegKey key;
|
| DWORD min_relaunch_date;
|
| - if (key.Open(HKEY_CURRENT_USER, kChromeRegClientStateKey,
|
| - KEY_QUERY_VALUE) == ERROR_SUCCESS &&
|
| + if (key.Open(HKEY_CURRENT_USER,
|
| + kChromeRegClientStateKey,
|
| + KEY_QUERY_VALUE | KEY_WOW64_32KEY) == ERROR_SUCCESS &&
|
| key.ReadValueDW(kRelaunchAllowedAfterValue,
|
| &min_relaunch_date) == ERROR_SUCCESS &&
|
| FormatDateOffsetByMonths(0) < min_relaunch_date) {
|
| @@ -773,8 +778,9 @@ BOOL __stdcall SetRelaunchOffered(const wchar_t** partner_brandcode_list,
|
| // Store the relaunched brand code and the minimum date for relaunch (6 months
|
| // from now), and set the Omaha experiment label.
|
| RegKey key;
|
| - if (key.Create(HKEY_CURRENT_USER, kChromeRegClientStateKey,
|
| - KEY_SET_VALUE) != ERROR_SUCCESS ||
|
| + if (key.Create(HKEY_CURRENT_USER,
|
| + kChromeRegClientStateKey,
|
| + KEY_SET_VALUE | KEY_WOW64_32KEY) != ERROR_SUCCESS ||
|
| key.WriteValue(kRelaunchBrandcodeValue,
|
| relaunch_brandcode) != ERROR_SUCCESS ||
|
| key.WriteValue(kRelaunchAllowedAfterValue,
|
|
|