startinfo start open net from example application c# .net process

c# - open - Error en Process.Start()-El sistema no puede encontrar el archivo especificado



process start c# parameters (5)

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.

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?


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


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 compilar 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);


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

Environment.CurrentDirectory