none
Error con processStartInfo y duda sobre runAs RRS feed

  • Pregunta

  • Buenos días

    Tengo el siguiente código

    ProcessStartInfo _processStartInfo = new ProcessStartInfo();
    _processStartInfo.WorkingDirectory = "%ProgramFiles%" + @"\Internet Explorer";
    //Tampoco funciona si especifico la ruta así:
    //_processStartInfo.WorkingDirectory = @"C:\Program Files\Internet Explorer";
    _processStartInfo.FileName = @"iexplore";
    //Tampoco funciona si especifico el nombre del ejecutable así:
    //_processStartInfo.FileName = @"iexplore.exe";
    _processStartInfo.Arguments = "www.microsoft.com";
    _processStartInfo.CreateNoWindow = true;
    _processStartInfo.Domain = "miDominio";
    _processStartInfo.UserName = "miUsuario";
    System.Security.SecureString ssPwd = new System.Security.SecureString();
    string password = "miContraseña";
    for (int x = 0; x < password.Length; x++)
    {
        ssPwd.AppendChar(password[x]);
    }
    password = "";
    _processStartInfo.Password = ssPwd;
    _processStartInfo.UseShellExecute = false;
    _processStartInfo.RedirectStandardOutput = true;
    Process myProcess = Process.Start(_processStartInfo);

    Y me da el siguiente error: El sistema no puede encontrar el archivo especificado

    Sin embargo, si pruebo con un usuario que no tenga dominio y además en vez de especificar la aplicación y la ruta la pongo directamente en el constructor y quito un par de propiedades me funciona

    ProcessStartInfo _processStartInfo = new ProcessStartInfo(@"C:\Program Files\Internet Explorer\iexplore.exe");
    _processStartInfo.Arguments = "www.microsoft.com";
    _processStartInfo.UserName = "miUsuario";
    System.Security.SecureString ssPwd = new System.Security.SecureString();
    string password = "miContraseña";
    for (int x = 0; x < password.Length; x++)
    {
        ssPwd.AppendChar(password[x]);
    }
    password = "";
    _processStartInfo.Password = ssPwd;
    _processStartInfo.UseShellExecute = false;
    Process myProcess = Process.Start(_processStartInfo);

    Pero el problema rádica en que necesito el dominio y además necesito que no se especifique en el constructor, sino que se especifique en filename el nombre de la aplicación y en workingDirectory la ruta de donde se encuentra dicha aplicación.

    Alguien me puede ayudar.

    He probado también ejecutar la aplicación runAs el problema es que luego me sale una ventana cmd para que meta la clave de usuario y la clave de usuario no quiero que se tenga que escribir sino que se adjunto en el código, si hay algún modo de hacerlo estaría bien saberlo.

    Mi objetivo es que un usuario pulse un botón y ese botón ejecute la aplicación de iexplore.exe como otro usuario y que se cargue una pagina determinada, esto es para ver si el usuario de windows con cuenta en el ordenador, tiene permiso de acceso a la aplicación web. Saludos.


    martes, 31 de marzo de 2020 12:07

Todas las respuestas

  • Hola Dudando, 

      

    Gracias por levantar tu consulta en los foros de MSDN. Entendimos su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso. 

      

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN. 

      

      

    Eric Ruiz 

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    martes, 31 de marzo de 2020 15:09
    Moderador
  • que se especifique en filename el nombre de la aplicación y en workingDirectory la ruta de donde se encuentra dicha aplicación

    Creo que has interpretado mal la utilidad del WorkingDirectory. Si no me equivoco, el WorkingDirectory solo se usa para pasárselo al programa que ejecutas de modo que dicho programa tenga ese directorio como "current", pero no lo usa el propio Process para encontrar el programa que va a ejecutar.

    Por lo tanto, no puedes configurar el WorkingDirectory y luego simplemente poner processStartInfo.FileName = @"iexplore.exe"; (y mucho menos iexplore sin el .exe), sino que en FileName tienes que poner la ruta completa del ejecutable (que es lo que hace el constructor cuando le pasas ahí la ruta en lugar de usar el FileName).

    martes, 31 de marzo de 2020 16:11
    Moderador