diff options
author | robertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-02 18:08:40 +0000 |
---|---|---|
committer | robertshield@chromium.org <robertshield@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-02-02 18:08:40 +0000 |
commit | b2682c2cf5442bccae22ae4648b30f7f568444ff (patch) | |
tree | 76e007fb9581853ed7547d3cbd95745dda20b7da /chrome/installer/util/shell_util.cc | |
parent | f32c232050574957185a792afab5ee1d094218cb (diff) | |
download | chromium_src-b2682c2cf5442bccae22ae4648b30f7f568444ff.zip chromium_src-b2682c2cf5442bccae22ae4648b30f7f568444ff.tar.gz chromium_src-b2682c2cf5442bccae22ae4648b30f7f568444ff.tar.bz2 |
Setting the App Paths registry key at install time for admin users for
chrome.exe.
URL=http://codereview.chromium.org/18560/show
BUG=5686
Review URL: http://codereview.chromium.org/19758
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9046 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/installer/util/shell_util.cc')
-rw-r--r-- | chrome/installer/util/shell_util.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc index 23bdc5a..7353f64 100644 --- a/chrome/installer/util/shell_util.cc +++ b/chrome/installer/util/shell_util.cc @@ -13,6 +13,7 @@ #include "chrome/installer/util/shell_util.h" +#include "base/file_path.h" #include "base/file_util.h" #include "base/logging.h" #include "base/path_service.h" @@ -312,6 +313,11 @@ bool SetAccessDefaultRegEntries(HKEY root_key, delete (*itr); } + // Append the App Paths registry entries. Do this only if we are an admin, + // since they are always written to HKLM. + if (IsUserAnAdmin()) + ShellUtil::AddChromeAppPathWorkItems(chrome_exe, items.get()); + // Apply all the registry changes and if there is a problem, rollback. if (!items->Do()) { LOG(ERROR) << "Failed to add Chrome to Set Program Access and Defaults"; @@ -465,6 +471,29 @@ bool ShellUtil::GetQuickLaunchPath(bool system_level, std::wstring* path) { return true; } +void ShellUtil::AddChromeAppPathWorkItems( + const std::wstring& chrome_exe, WorkItemList* item_list) { + WorkItem* create_work_item = WorkItem::CreateCreateRegKeyWorkItem( + HKEY_LOCAL_MACHINE, installer_util::kAppPathsRegistryKey); + + item_list->AddWorkItem(create_work_item); + + WorkItem* set_default_value_work_item = + WorkItem::CreateSetRegValueWorkItem(HKEY_LOCAL_MACHINE, + installer_util::kAppPathsRegistryKey, + installer_util::kAppPathsRegistryDefaultName, + chrome_exe, true); + item_list->AddWorkItem(set_default_value_work_item); + + FilePath chrome_path(chrome_exe); + WorkItem* set_path_value_work_item = + WorkItem::CreateSetRegValueWorkItem(HKEY_LOCAL_MACHINE, + installer_util::kAppPathsRegistryKey, + installer_util::kAppPathsRegistryPathName, + chrome_path.DirName().value(), true); + item_list->AddWorkItem(set_path_value_work_item); +} + bool ShellUtil::CreateChromeDesktopShortcut(const std::wstring& chrome_exe, int shell_change, bool create_new) { |