Comment exécuter le processus sur une machine distante, en C #
Comment puis-je commencer un processus sur un ordinateur distant en c#, dire le nom de l'ordinateur = "someComputer", en utilisant le Système.Diagnostics.La classe de processus?
J'ai créé une petite application console sur cet ordinateur distant qui écrit simplement "Hello world" sur un fichier txt, et je voudrais lancer un appel à distance.
Console chemin de app: c:\MyAppFolder\MyApp.exe
Actuellement j'ai ceci:
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);
Je reçois "le chemin Réseau n'a pas été trouvé".
source d'informationauteur DJPB | 2010-02-26
Vous devez vous connecter pour publier un commentaire.
Pouvez pouvez utiliser PsExec de http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
Ou WMI:
Utiliser l'une des opérations suivantes:
Ou si vous en avez envie, injecter votre propre service ou d'un composant COM. Ce serait très proche de ce que PsExec ne.
De toutes ces méthodes, je préfère le planificateur de tâches. Le plus propre API de tous, je pense. Se connecter à la télécommande du planificateur de tâches, de créer une nouvelle tâche pour l'exécutable, l'exécuter. Remarque: le nom de l'exécutable doit être locale que de la machine. Pas \servername\path\file.exe mais c:\path\file.exe. Supprimer la tâche si vous en avez envie.
Toutes ces méthodes nécessitent que vous disposez d'un accès administrateur sur l'ordinateur cible.
ProcessStartInfo
n'est pas capable de lancer des processus à distance.Selon MSDNun
Process
objet permet seulement accès de processus distants pas la possibilité de démarrer ou d'arrêter des processus à distance. Donc, pour répondre à votre question en ce qui concerne à l'aide de cette classe, vous ne pouvez pas.Un exemple avec WMI et d'autres informations d'identification que le processus actuel, à défaut, il a utilisé le même utilisateur que le processus s'exécute.
Je ne crois pas que vous pouvez démarrer un processus par le biais d'un chemin d'accès UNC directement; qui est, si le Système.Le processus utilise windows comspec pour lancer l'application... que diriez-vous de tester cette théorie en mappant un lecteur de "\someComputer\chemin", puis changer votre création de l'ProcessStartInfo? Si cela fonctionne de cette façon, alors vous pouvez envisager temporairement le mappage d'un lecteur par programme, de lancement de votre application, puis supprimer le mappage (un peu comme pushd/popd travaille à partir d'une fenêtre de commande).