Process.Start(IExplore.exe, http://google.com) не запускается на виртуальной машине. Работает на сервере и локально

Как выше в заголовке

Process.Start("IExplore.exe", "http://google.com") 

Не запускает IE на виртуальной машине, которую я использую. Однако при выполнении на реальной машине сервера и локальной машине он запускается правильно.

Пробовал следующее:

Process.Start("IEXPLORE.EXE", "-nomerge http://google.com/");

как предложено в сообщении Process.Start(IEXPLORE.EXE) сразу же запускает событие Exited после запуска... почему?

и

try
 {
     Process.Start("http://google.com");
 }
catch (System.ComponentModel.Win32Exception)
 {
     Process.Start("IExplore.exe", "http://google.com");
 }

и

ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");

Любые предложения с благодарностью


person stuggyg    schedule 24.04.2014    source источник
comment
Почему ты глотаешь Win32Exception? Что произойдет, если вы его поймаете?   -  person Dai    schedule 25.04.2014
comment
@Dai Это было добавлено, поскольку на реальном сервере, а НЕ на виртуальной машине, в этом случае кажется, что Win32 выбран для Process.Start("http://google.com")   -  person stuggyg    schedule 25.04.2014
comment
@HamletHakobyan Кажется, что на виртуальной машине не возникает никаких исключений, код запускается, и ничего не вызывается, проверил диспетчер задач для IE на случай   -  person stuggyg    schedule 25.04.2014
comment
Просто чтобы подтвердить, этот код работает в интерактивном процессе, верно? (например, окно консоли или приложение WPF/WinForms)? Создание процессов с графическим интерфейсом из безголовых процессов, таких как служба Windows или ASP.NET, не удастся.   -  person Dai    schedule 25.04.2014
comment
@Dai да, этот сегмент кода находится в консольном приложении C #   -  person stuggyg    schedule 25.04.2014


Ответы (3)


Вы установили IE на виртуальную машину, верно: D? В любом случае попробуйте запустить приложение от имени администратора, возможно, настройки UAC на виртуальной машине «неправильные».

person Maximc    schedule 24.04.2014
comment
Спасибо за прочтение сообщения. Да, IE установлен, так как можно просто щелкнуть значок или перейти к полному пути в программных файлах, чтобы запустить IE. Пробовал запускать от имени администратора, к сожалению, не работает. - person stuggyg; 25.04.2014

Попробуй это...

Process.Start("http://www.google.com");

Он запустит сайт в вашем браузере по умолчанию. Предполагая, что это Internet Explorer, все готово.

person mason    schedule 24.04.2014

Вот урезанный класс, который может оказаться полезным, если вы хотите автоматизировать IE.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using SHDocVw;
using mshtml;

public class InternetExplorerInstance
{
   public InternetExplorer Instance;

   public static InternetExplorerInstance GetCurrentInternetExplorerInstance()
   {
      InternetExplorer currentInternetExplorer = CurrentInternetExplorer();
      if ( currentInternetExplorer != null )
      {
         return new InternetExplorerInstance( currentInternetExplorer );
      }
      return null;
   }

   private InternetExplorerInstance( InternetExplorer ie )
   {
      Instance = ie;
   }

   public static void Iterate()
   {
      GetInternetExplorers();
   }

   private static IEnumerable<InternetExplorer> GetInternetExplorers()
   {
      ShellWindows shellWindows = new ShellWindowsClass();
      List<InternetExplorer> allExplorers = shellWindows.Cast<InternetExplorer>().ToList();
      IEnumerable<InternetExplorer> internetExplorers = allExplorers.Where( ie => Path.GetFileNameWithoutExtension( ie.FullName ).ToLower() == "iexplore" );
      return internetExplorers;
   }

   public static void LaunchNewPage( string url )
   {
      InternetExplorer internetExplorer = GetInternetExplorers().FirstOrDefault();
      if ( internetExplorer != null )
      {
         internetExplorer.Navigate2( url, 0x800 );
         WindowsApi.BringWindowToFront( (IntPtr) internetExplorer.HWND );
      }
      else
      {
         internetExplorer = new InternetExplorer();
         internetExplorer.Visible = true;
         internetExplorer.Navigate2( url );
         WindowsApi.BringWindowToFront((IntPtr) internetExplorer.HWND);
      }

   }
}

Не весь код включен, но для начала его должно хватить.

person Derek    schedule 24.04.2014