Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: chrome/utility/importer/ie_importer_win.cc

Issue 616173003: Allow Registry Iterator functions to use a specified WOW64 mode when iterating. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/utility/importer/ie_importer_win.h" 5 #include "chrome/utility/importer/ie_importer_win.h"
6 6
7 #include <ole2.h> 7 #include <ole2.h>
8 #include <intshcut.h> 8 #include <intshcut.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 #include <urlhist.h> 10 #include <urlhist.h>
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 std::vector<uint8> blob(blob_length); 218 std::vector<uint8> blob(blob_length);
219 if (blob_length > 0 && 219 if (blob_length > 0 &&
220 key.ReadValue(L"Order", reinterpret_cast<DWORD*>(&blob[0]), 220 key.ReadValue(L"Order", reinterpret_cast<DWORD*>(&blob[0]),
221 &blob_length, NULL) == ERROR_SUCCESS) { 221 &blob_length, NULL) == ERROR_SUCCESS) {
222 if (!ParseFavoritesOrderBlob(importer, blob, path, sort_index)) 222 if (!ParseFavoritesOrderBlob(importer, blob, path, sort_index))
223 return false; 223 return false;
224 } 224 }
225 } 225 }
226 226
227 // Recursively parse subfolders. 227 // Recursively parse subfolders.
228 for (base::win::RegistryKeyIterator child(key.Handle(), L""); 228 for (base::win::RegistryKeyIterator child(key.Handle(), L"", 0);
229 child.Valid() && !importer->cancelled(); 229 child.Valid() && !importer->cancelled();
230 ++child) { 230 ++child) {
231 base::win::RegKey subkey(key.Handle(), child.Name(), KEY_READ); 231 base::win::RegKey subkey(key.Handle(), child.Name(), KEY_READ);
232 if (subkey.Valid()) { 232 if (subkey.Valid()) {
233 base::FilePath subpath(path.Append(child.Name())); 233 base::FilePath subpath(path.Append(child.Name()));
234 if (!ParseFavoritesOrderRegistryTree(importer, subkey, subpath, 234 if (!ParseFavoritesOrderRegistryTree(importer, subkey, subpath,
235 sort_index)) { 235 sort_index)) {
236 return false; 236 return false;
237 } 237 }
238 } 238 }
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 } 639 }
640 } 640 }
641 641
642 bridge_->SetPasswordForm(form); 642 bridge_->SetPasswordForm(form);
643 } 643 }
644 } 644 }
645 645
646 void IEImporter::ImportPasswordsIE7() { 646 void IEImporter::ImportPasswordsIE7() {
647 base::string16 key_path(importer::GetIE7PasswordsKey()); 647 base::string16 key_path(importer::GetIE7PasswordsKey());
648 base::win::RegKey key(HKEY_CURRENT_USER, key_path.c_str(), KEY_READ); 648 base::win::RegKey key(HKEY_CURRENT_USER, key_path.c_str(), KEY_READ);
649 base::win::RegistryValueIterator reg_iterator(HKEY_CURRENT_USER, 649 base::win::RegistryValueIterator reg_iterator(
650 key_path.c_str()); 650 HKEY_CURRENT_USER, key_path.c_str(), 0);
651 importer::ImporterIE7PasswordInfo password_info; 651 importer::ImporterIE7PasswordInfo password_info;
652 while (reg_iterator.Valid() && !cancelled()) { 652 while (reg_iterator.Valid() && !cancelled()) {
653 // Get the size of the encrypted data. 653 // Get the size of the encrypted data.
654 DWORD value_len = 0; 654 DWORD value_len = 0;
655 key.ReadValue(reg_iterator.Name(), NULL, &value_len, NULL); 655 key.ReadValue(reg_iterator.Name(), NULL, &value_len, NULL);
656 if (value_len) { 656 if (value_len) {
657 // Query the encrypted data. 657 // Query the encrypted data.
658 password_info.encrypted_data.resize(value_len); 658 password_info.encrypted_data.resize(value_len);
659 if (key.ReadValue(reg_iterator.Name(), 659 if (key.ReadValue(reg_iterator.Name(),
660 &password_info.encrypted_data.front(), 660 &password_info.encrypted_data.front(),
661 &value_len, NULL) == ERROR_SUCCESS) { 661 &value_len, NULL) == ERROR_SUCCESS) {
662 password_info.url_hash = reg_iterator.Name(); 662 password_info.url_hash = reg_iterator.Name();
663 password_info.date_created = base::Time::Now(); 663 password_info.date_created = base::Time::Now();
664 664
665 bridge_->AddIE7PasswordInfo(password_info); 665 bridge_->AddIE7PasswordInfo(password_info);
666 } 666 }
667 } 667 }
668 668
669 ++reg_iterator; 669 ++reg_iterator;
670 } 670 }
671 } 671 }
672 672
673 void IEImporter::ImportSearchEngines() { 673 void IEImporter::ImportSearchEngines() {
674 // On IE, search engines are stored in the registry, under: 674 // On IE, search engines are stored in the registry, under:
675 // Software\Microsoft\Internet Explorer\SearchScopes 675 // Software\Microsoft\Internet Explorer\SearchScopes
676 // Each key represents a search engine. The URL value contains the URL and 676 // Each key represents a search engine. The URL value contains the URL and
677 // the DisplayName the name. 677 // the DisplayName the name.
678 typedef std::map<std::string, base::string16> SearchEnginesMap; 678 typedef std::map<std::string, base::string16> SearchEnginesMap;
679 SearchEnginesMap search_engines_map; 679 SearchEnginesMap search_engines_map;
680 for (base::win::RegistryKeyIterator key_iter(HKEY_CURRENT_USER, 680 for (base::win::RegistryKeyIterator key_iter(
681 kSearchScopePath); key_iter.Valid(); ++key_iter) { 681 HKEY_CURRENT_USER, kSearchScopePath, 0);
682 key_iter.Valid();
683 ++key_iter) {
682 base::string16 sub_key_name = kSearchScopePath; 684 base::string16 sub_key_name = kSearchScopePath;
683 sub_key_name.append(L"\\").append(key_iter.Name()); 685 sub_key_name.append(L"\\").append(key_iter.Name());
684 base::win::RegKey sub_key(HKEY_CURRENT_USER, sub_key_name.c_str(), 686 base::win::RegKey sub_key(HKEY_CURRENT_USER, sub_key_name.c_str(),
685 KEY_READ); 687 KEY_READ);
686 base::string16 wide_url; 688 base::string16 wide_url;
687 if ((sub_key.ReadValue(L"URL", &wide_url) != ERROR_SUCCESS) || 689 if ((sub_key.ReadValue(L"URL", &wide_url) != ERROR_SUCCESS) ||
688 wide_url.empty()) { 690 wide_url.empty()) {
689 VLOG(1) << "No URL for IE search engine at " << key_iter.Name(); 691 VLOG(1) << "No URL for IE search engine at " << key_iter.Name();
690 continue; 692 continue;
691 } 693 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 static int version = -1; 874 static int version = -1;
873 if (version < 0) { 875 if (version < 0) {
874 wchar_t buffer[128]; 876 wchar_t buffer[128];
875 DWORD buffer_length = sizeof(buffer); 877 DWORD buffer_length = sizeof(buffer);
876 base::win::RegKey reg_key(HKEY_LOCAL_MACHINE, kIEVersionKey, KEY_READ); 878 base::win::RegKey reg_key(HKEY_LOCAL_MACHINE, kIEVersionKey, KEY_READ);
877 LONG result = reg_key.ReadValue(L"Version", buffer, &buffer_length, NULL); 879 LONG result = reg_key.ReadValue(L"Version", buffer, &buffer_length, NULL);
878 version = ((result == ERROR_SUCCESS)? _wtoi(buffer) : 0); 880 version = ((result == ERROR_SUCCESS)? _wtoi(buffer) : 0);
879 } 881 }
880 return version; 882 return version;
881 } 883 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698