From 81e32608bbb2da6f58291981fee183b3da913081 Mon Sep 17 00:00:00 2001 From: "finnur@chromium.org" Date: Tue, 7 Sep 2010 14:01:31 +0000 Subject: 2nd attempt: Write the outcome of the Toast Experiment for system-level installs to the right registry key. This time with the two boolean parameters in process_util_win.cc:281 flipped to match the function signature. TBR=cpu BUG=44378 TEST=None Review URL: http://codereview.chromium.org/3297015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58693 0039d316-1c4b-4281-b951-d872f2087c98 --- base/process_util_win.cc | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'base/process_util_win.cc') diff --git a/base/process_util_win.cc b/base/process_util_win.cc index fb7bdb8..4e4cce2 100644 --- a/base/process_util_win.cc +++ b/base/process_util_win.cc @@ -191,8 +191,9 @@ bool GetProcessIntegrityLevel(ProcessHandle process, IntegrityLevel *level) { return true; } -bool LaunchApp(const std::wstring& cmdline, - bool wait, bool start_hidden, ProcessHandle* process_handle) { +bool LaunchAppImpl(const std::wstring& cmdline, + bool wait, bool start_hidden, bool inherit_handles, + ProcessHandle* process_handle) { STARTUPINFO startup_info = {0}; startup_info.cb = sizeof(startup_info); startup_info.dwFlags = STARTF_USESHOWWINDOW; @@ -200,7 +201,7 @@ bool LaunchApp(const std::wstring& cmdline, PROCESS_INFORMATION process_info; if (!CreateProcess(NULL, const_cast(cmdline.c_str()), NULL, NULL, - FALSE, 0, NULL, NULL, + inherit_handles, 0, NULL, NULL, &startup_info, &process_info)) return false; @@ -219,14 +220,26 @@ bool LaunchApp(const std::wstring& cmdline, return true; } +bool LaunchApp(const std::wstring& cmdline, + bool wait, bool start_hidden, ProcessHandle* process_handle) { + return LaunchAppImpl(cmdline, wait, start_hidden, false, process_handle); +} + +bool LaunchAppWithHandleInheritance( + const std::wstring& cmdline, bool wait, bool start_hidden, + ProcessHandle* process_handle) { + return LaunchAppImpl(cmdline, wait, start_hidden, true, process_handle); +} + bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline, bool start_hidden, ProcessHandle* process_handle) { - return LaunchAppAsUser(token, cmdline, start_hidden, process_handle, false); + return LaunchAppAsUser(token, cmdline, start_hidden, process_handle, + false, false); } bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline, bool start_hidden, ProcessHandle* process_handle, - bool empty_desktop_name) { + bool empty_desktop_name, bool inherit_handles) { STARTUPINFO startup_info = {0}; startup_info.cb = sizeof(startup_info); if (empty_desktop_name) @@ -244,7 +257,7 @@ bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline, BOOL launched = CreateProcessAsUser(token, NULL, const_cast(cmdline.c_str()), - NULL, NULL, FALSE, flags, enviroment_block, + NULL, NULL, inherit_handles, flags, enviroment_block, NULL, &startup_info, &process_info); DestroyEnvironmentBlock(enviroment_block); @@ -264,8 +277,8 @@ bool LaunchAppAsUser(UserTokenHandle token, const std::wstring& cmdline, bool LaunchApp(const CommandLine& cl, bool wait, bool start_hidden, ProcessHandle* process_handle) { - return LaunchApp(cl.command_line_string(), wait, - start_hidden, process_handle); + return LaunchAppImpl(cl.command_line_string(), wait, + start_hidden, false, process_handle); } // Attempts to kill the process identified by the given process -- cgit v1.1