none
Acceder a equipo remoto a través de C# RRS feed

  • Pregunta

  • Hola!

    Estoy tratando de conectarme a un equipo en RED usando ProcessStartInfo ya he agregado las credenciales pero aun asi no me permite como puedo solucionar esto?

    SecureString pass = SecureStrings();
                    ProcessStartInfo info = new ProcessStartInfo();
                    info.FileName = "explorer.exe";
                    info.WindowStyle = ProcessWindowStyle.Maximized;
                    info.Arguments = @"\\HLB57H2\c$";
                    info.UseShellExecute = false;
                    info.UserName = "ADMINISTRATOR";
                    info.LoadUserProfile = false;
                    info.Password = pass;
                    info.Domain = "RITCHMUELLER";
                    Process.Start(info);
    y al momento de correlo me sale esto

    


    Marco

    viernes, 16 de agosto de 2019 20:27

Respuestas

  • Si no recuerdo mal, "explorer.exe" es un caso excepcional, y no permite ser lanzado con credenciales distintas de las del usuario logado. No es una limitación exclusiva de tu programa en C#, también falla si lo intentas lanzar desde línea de comando usando otras credenciales con "RUNAS". Si haces lo mismo con otro programa que no sea explorer.exe sí que debería funcionar tal como lo haces.
    viernes, 16 de agosto de 2019 20:37
    Moderador
  • Psexec requiere la ruta absoluta del programa ("C:\carpeta\ejecutable.exe"). No basta con escribir el nombre del ejecutable y esperar que lo busque en el PATH.

    Si con eso tampoco te funciona, te propongo una alternativa: Como ya sabras, puedes mapear una unidad de red tal como "R:" usando el comando NET USE con los parametros adecuados, entre los que puedes pasar usuario y password. Pues bien, si lanzas ese comando mediante Process.Start, a continuacion puedes lanzar Explorer.exe contra R: y te accedera a la carpeta de red.

    No es necesario (aunque es bastante comun) usar una letra de unidad tal como R:. El comando NET USE tambien permite pasar las credenciales para la ruta UNC sin poner una unidad de red, con lo que al final conseguirias el mismo efecto que estabas tratando de conseguir al lanzar explorer con credenciales.

    lunes, 19 de agosto de 2019 12:37
    Moderador

Todas las respuestas

  • Si no recuerdo mal, "explorer.exe" es un caso excepcional, y no permite ser lanzado con credenciales distintas de las del usuario logado. No es una limitación exclusiva de tu programa en C#, también falla si lo intentas lanzar desde línea de comando usando otras credenciales con "RUNAS". Si haces lo mismo con otro programa que no sea explorer.exe sí que debería funcionar tal como lo haces.
    viernes, 16 de agosto de 2019 20:37
    Moderador
  • con que otro comando lo puedo lanzar para conectarme al equipo remoto? ya use psexec.exe y me dice que no se encuentra la ruta del archivo 

    Marco

    viernes, 16 de agosto de 2019 20:44
  • Con PSEXEC puedes llamar a un ejecutable siempre que le pongas la ruta completa donde se encuentra el ejecutable. No basta con poner solo el nombre (sin ruta) y esperar que lo busque en el PATH.

    Si eso falla, te propongo otra alternativa: Primero mapea una unidad a la carpeta remota, usando las credenciales necesarias. Esto se puede hacer desde una ventana de comandos así:

    net use x: \\HLB57H2\c$ /user:administrator password

    Desde C# puedes enviar ese mismo comando mediante Process.Start.

    Una vez hecho eso, lanzas explorer.exe pasándole como parámetro "x:" para que navegue a la unidad mapeada.

    sábado, 17 de agosto de 2019 18:19
    Moderador
  • hola

    Que accion quieres realizar en el equipo remoto ?

    porque el comando que muestras abrira el explorer, eso eso lo que quieres abrir una aplicacion? o quiere acceder a esa carpeta remota?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 18 de agosto de 2019 23:13
  • Psexec requiere la ruta absoluta del programa ("C:\carpeta\ejecutable.exe"). No basta con escribir el nombre del ejecutable y esperar que lo busque en el PATH.

    Si con eso tampoco te funciona, te propongo una alternativa: Como ya sabras, puedes mapear una unidad de red tal como "R:" usando el comando NET USE con los parametros adecuados, entre los que puedes pasar usuario y password. Pues bien, si lanzas ese comando mediante Process.Start, a continuacion puedes lanzar Explorer.exe contra R: y te accedera a la carpeta de red.

    No es necesario (aunque es bastante comun) usar una letra de unidad tal como R:. El comando NET USE tambien permite pasar las credenciales para la ruta UNC sin poner una unidad de red, con lo que al final conseguirias el mismo efecto que estabas tratando de conseguir al lanzar explorer con credenciales.

    lunes, 19 de agosto de 2019 12:37
    Moderador