Principales respuestas
Acceder a equipo remoto a través de C#

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
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.
- Propuesto como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18
- Marcado como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18
-
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.
- Marcado como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18
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.
- Propuesto como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18
- Marcado como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18
-
-
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.
- Editado Alberto PoblacionMVP, Moderator sábado, 17 de agosto de 2019 18:26
-
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 -
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.
- Marcado como respuesta Pablo RubioModerator miércoles, 21 de agosto de 2019 18:18