| Index: goopdate/process_launcher.cc
|
| diff --git a/goopdate/process_launcher.cc b/goopdate/process_launcher.cc
|
| deleted file mode 100644
|
| index 3b77287f9d20fac63ed6f7c456d35cee7359a4c7..0000000000000000000000000000000000000000
|
| --- a/goopdate/process_launcher.cc
|
| +++ /dev/null
|
| @@ -1,128 +0,0 @@
|
| -// Copyright 2008-2010 Google Inc.
|
| -//
|
| -// Licensed under the Apache License, Version 2.0 (the "License");
|
| -// you may not use this file except in compliance with the License.
|
| -// You may obtain a copy of the License at
|
| -//
|
| -// http://www.apache.org/licenses/LICENSE-2.0
|
| -//
|
| -// Unless required by applicable law or agreed to in writing, software
|
| -// distributed under the License is distributed on an "AS IS" BASIS,
|
| -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -// See the License for the specific language governing permissions and
|
| -// limitations under the License.
|
| -// ========================================================================
|
| -
|
| -
|
| -#include "omaha/goopdate/process_launcher.h"
|
| -#include "omaha/base/browser_utils.h"
|
| -#include "omaha/base/const_object_names.h"
|
| -#include "omaha/base/debug.h"
|
| -#include "omaha/base/exception_barrier.h"
|
| -#include "omaha/base/logging.h"
|
| -#include "omaha/base/system.h"
|
| -#include "omaha/base/vista_utils.h"
|
| -#include "omaha/base/vistautil.h"
|
| -#include "omaha/core/google_update_core.h"
|
| -
|
| -namespace omaha {
|
| -
|
| -ProcessLauncher::ProcessLauncher() : StdMarshalInfo(true) {
|
| - CORE_LOG(L6, (_T("[ProcessLauncher::ProcessLauncher]")));
|
| -}
|
| -
|
| -ProcessLauncher::~ProcessLauncher() {
|
| - CORE_LOG(L6, (_T("[ProcessLauncher::~ProcessLauncher]")));
|
| -}
|
| -
|
| -STDMETHODIMP ProcessLauncher::LaunchCmdLine(const TCHAR* cmd_line) {
|
| - CORE_LOG(L1, (_T("[ProcessLauncher::LaunchCmdLine][%s]"), cmd_line));
|
| - // The exception barrier is needed, because any exceptions that are thrown
|
| - // in this method will get caught by the COM run time. We compile with
|
| - // exceptions off, and do not expect to throw any exceptions. This barrier
|
| - // will treat an exception in this method as a unhandled exception.
|
| - ExceptionBarrier barrier;
|
| - if (cmd_line == NULL) {
|
| - return E_INVALIDARG;
|
| - }
|
| -
|
| - // http://b/3329538: In the impersonated case, need to create a fresh
|
| - // environment block and ::CreateProcess. RunAsCurrentUser does just that.
|
| - HRESULT hr = vista::RunAsCurrentUser(cmd_line);
|
| - if (FAILED(hr)) {
|
| - UTIL_LOG(LW, (_T("[RunAsCurrentUser failed][0x%x]"), hr));
|
| - }
|
| - return hr;
|
| -}
|
| -
|
| -STDMETHODIMP ProcessLauncher::LaunchBrowser(DWORD type, const TCHAR* url) {
|
| - CORE_LOG(L1, (_T("[ProcessLauncher::LaunchBrowser][%d][%s]"), type, url));
|
| - // The exception barrier is needed, because any exceptions that are thrown
|
| - // in this method will get caught by the COM run time. We compile with
|
| - // exceptions off, and do not expect to throw any exceptions. This barrier
|
| - // will treat an exception in this method as a unhandled exception.
|
| - ExceptionBarrier barrier;
|
| - if (type >= BROWSER_MAX || url == NULL) {
|
| - return E_INVALIDARG;
|
| - }
|
| - return RunBrowser(static_cast<BrowserType>(type), url);
|
| -}
|
| -
|
| -// This method delegates to the internal interface exposed by the system
|
| -// service, and if the service cannot be instantiated, exposed by a Local COM
|
| -// Server.
|
| -//
|
| -// Non elevated callers can request a command to be run elevated.
|
| -// The command must be registered before by elevated code to prevent
|
| -// launching untrusted commands. The security of the command is based on
|
| -// having the correct registry ACLs for the machine Omaha registry.
|
| -STDMETHODIMP ProcessLauncher::LaunchCmdElevated(const WCHAR* app_guid,
|
| - const WCHAR* cmd_id,
|
| - DWORD caller_proc_id,
|
| - ULONG_PTR* proc_handle) {
|
| - CORE_LOG(L3, (_T("[ProcessLauncher::LaunchCmdElevated]")
|
| - _T("[app %s][cmd %s][pid %d]"),
|
| - app_guid, cmd_id, caller_proc_id));
|
| -
|
| - ExceptionBarrier barrier;
|
| -
|
| - ASSERT1(app_guid);
|
| - ASSERT1(cmd_id);
|
| - ASSERT1(proc_handle);
|
| -
|
| - CComPtr<IGoogleUpdateCore> google_update_core;
|
| - HRESULT hr =
|
| - google_update_core.CoCreateInstance(__uuidof(GoogleUpdateCoreClass));
|
| -
|
| - if (FAILED(hr)) {
|
| - CORE_LOG(LE, (_T("[CoCreate GoogleUpdateCoreClass failed][0x%x]"), hr));
|
| -
|
| - if (!vista_util::IsVistaOrLater() && !vista_util::IsUserAdmin()) {
|
| - return hr;
|
| - }
|
| -
|
| - hr = System::CoCreateInstanceAsAdmin(NULL,
|
| - __uuidof(GoogleUpdateCoreMachineClass),
|
| - IID_PPV_ARGS(&google_update_core));
|
| - if (FAILED(hr)) {
|
| - CORE_LOG(LE, (_T("[GoogleUpdateCoreMachineClass failed][0x%x]"), hr));
|
| - return hr;
|
| - }
|
| - }
|
| -
|
| - ASSERT1(google_update_core);
|
| - hr = ::CoSetProxyBlanket(google_update_core, RPC_C_AUTHN_DEFAULT,
|
| - RPC_C_AUTHZ_DEFAULT, COLE_DEFAULT_PRINCIPAL, RPC_C_AUTHN_LEVEL_DEFAULT,
|
| - RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_DEFAULT);
|
| - if (FAILED(hr)) {
|
| - return hr;
|
| - }
|
| -
|
| - return google_update_core->LaunchCmdElevated(app_guid,
|
| - cmd_id,
|
| - caller_proc_id,
|
| - proc_handle);
|
| -}
|
| -
|
| -} // namespace omaha
|
| -
|
|
|