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