studio - Cómo ejecutar el proceso en máquina remota, en C#
visual studio installer (4)
No creo que pueda iniciar un proceso directamente a través de una ruta UNC; es decir, si System.Process usa el comspec de Windows para iniciar la aplicación ... ¿qué le parece probar esta teoría asignando un disco a "/ someComputer / somePath", y luego cambiando su creación de ProcessStartInfo a eso? Si funciona de esa manera, entonces puede considerar mapear temporalmente un disco de forma programática, iniciar su aplicación y luego eliminar el mapeo (al igual que pushd / popd funciona desde una ventana de comandos).
¿Cómo puedo iniciar un proceso en una computadora remota en c #, por ejemplo computer name = "someComputer", usando System.Diagnostics.Process class?
Creé una pequeña aplicación de consola en esa computadora remota que simplemente escribe "Hola mundo" a un archivo txt, y me gustaría llamarlo de forma remota.
Ruta de la aplicación de consola: c: / MyAppFolder / MyApp.exe
Actualmente tengo esto:
ProcessStartInfo startInfo = new ProcessStartInfo(string.Format(@"//{0}/{1}", someComputer, somePath);
startInfo.UserName = "MyUserName";
SecureString sec = new SecureString();
string pwd = "MyPassword";
foreach (char item in pwd)
{
sec.AppendChar(item);
}
sec.MakeReadOnly();
startInfo.Password = sec;
startInfo.UseShellExecute = false;
Process.Start(startInfo);
Sigo recibiendo "No se encontró la ruta de red".
Puede usar PsExec desde http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
O WMI:
object theProcessToRun() = { "YourFileHere" };
ManagementClass theClass = new ManagementClass(@"//server/root/cimv2:Win32_Process");
theClass.InvokeMethod("Create", theProcessToRun);
Según MSDN , un objeto de Process
solo permite el acceso a procesos remotos, no la capacidad de iniciar o detener procesos remotos. Entonces, para responder a su pregunta con respecto al uso de esta clase, no puede.
Use uno de los siguientes:
- (EDIT) Remote Powershell
- WMI (ver la respuesta de Ivan G)
- API del Programador de tareas ( http://msdn.microsoft.com/en-us/library/windows/desktop/aa383606%28v=vs.85%29.aspx )
- PsExec
- Objeto WshRemote con una secuencia de comandos ficticia. Lo más probable es que funcione a través de DCOM, activando algunos de los objetos de scripting de forma remota.
O si tiene ganas, inyecte su propio servicio o componente COM. Eso sería muy parecido a lo que hace PsExec.
De todos estos métodos, prefiero el programador de tareas. La API más limpia de todas, creo. Conéctese al programador de tareas remotas, cree una nueva tarea para el ejecutable, ejecútelo. Nota: el nombre del ejecutable debe ser local para esa máquina. Not / servername / path / file.exe, pero c: / path / file.exe. Borre la tarea si lo desea.
Todos esos métodos requieren que tenga acceso administrativo a la máquina de destino.
ProcessStartInfo
no es capaz de iniciar procesos remotos.