Error en Process.Start () – El sistema no puede encontrar el archivo especificado

Estoy usando el siguiente código para iniciar el proceso iexplore. Esto se hace en una aplicación de consola simple.

public static void StartIExplorer() { var info = new ProcessStartInfo("iexplore"); info.UseShellExecute = false; info.RedirectStandardInput = true; info.RedirectStandardOutput = true; info.RedirectStandardError = true; string password = "password"; SecureString securePassword = new SecureString(); for (int i = 0; i < password.Length; i++) securePassword.AppendChar(Convert.ToChar(password[i])); info.UserName = "userName"; info.Password = securePassword; info.Domain = "domain"; try { Process.Start(info); } catch (System.ComponentModel.Win32Exception ex) { Console.WriteLine(ex.Message); } } 

El código anterior arroja el error The system cannot find the file specified . El mismo código cuando se ejecuta sin especificar las credenciales del usuario funciona bien. No estoy seguro de por qué está arrojando este error.

¿Alguien puede explicar?

Intenta reemplazar tu código de inicialización por:

 ProcessStartInfo info = new ProcessStartInfo(@"C:\Program Files\Internet Explorer\iexplore.exe"); 

El uso de filepath no completo en Process.Start solo funciona si el archivo se encuentra en la carpeta System32.

No puede usar un nombre de archivo como iexplore porque la ruta de acceso a Internet Explorer no se encuentra en la PATH entorno PATH para el sistema o el usuario.

Sin embargo, cualquier ruta ingresada en la PATH entorno PATH permite usar solo el nombre del archivo para ejecutarlo.

System32 no es especial a este respecto, ya que se puede agregar cualquier directorio a la variable PATH . Cada ruta está simplemente delimitada por un punto y coma.

Por ejemplo, tengo c:\ffmpeg\bin\ y c:\nmap\bin\ en la variable de entorno de mi ruta, por lo que puedo hacer cosas como new ProcessStartInfo("nmap", "-foo") o new ProcessStartInfo("ffplay", "-bar")

La variable PATH real se ve así en mi máquina.

 %SystemRoot%\system32;C:\FFPlay\bin;C:\nmap\bin; 

Como puede ver, puede usar otras system variables , como %SystemRoot% para comstackr y construir rutas en la variable de entorno.

Entonces, si agrega una ruta como “% PROGRAMFILES% \ Internet Explorer;” a su variable PATH podrá usar ProcessStartInfo("iexplore");

Si no quiere alterar su PATH , simplemente use una variable del sistema como %PROGRAMFILES% o %SystemRoot% y luego amplíelo cuando sea necesario en el código. es decir

 string path = Environment.ExpandEnvironmentVariables( @"%PROGRAMFILES%\Internet Explorer\iexplore.exe"); var info = new ProcessStartInfo(path); 

Además, si el directorio de su PATH está entre comillas, funcionará desde el símbolo del sistema, pero recibirá el mismo mensaje de error

Es decir, esto causa un problema con Process.Start () al no encontrar su ejecutable:

 PATH="C:\my program\bin";c:\windows\system32 

Quizás ayuda a alguien.

He resuelto el problema después de incluir el archivo en el proyecto Espero haber ayudado

Puede utilizar lo siguiente para obtener la ruta completa a su progtwig de esta manera:

 Environment.CurrentDirectory