2010-08-29 7 views
3

J'ai copié le fichier exe et ce n'était pas un problème, en utilisant le code suivant, mais maintenant je veux l'exécuter, anyboyd peut m'aider à ce sujet. NOTE: J'ai l'accès aux serveurs via le bureau à distance, mais ne peux pas le faire manuellement, car il ya des dizaines d'entre eux, ne peux pas obtenir un programme en cours d'exécution sur le psex ou quoi que ce soit.Je veux copier et exécuter le fichier .exe sur un ordinateur Windows distant?

WindowsIdentity wi = new WindowsIdentity(token); 

//Next I set the WindowsImportsonationContext 

WindowsImpersonationContext impctx = wi.Impersonate(); 
System.IO.File.Copy("C:\\output.html", "\\\\PW42\\c$\\output1.html", true); 
System.Diagnostics.Process p = new System.Diagnostics.Process(); 
try 
{ 
    System.Diagnostics.Process.Start(@"\\PW42\c$\txt.bat"); 
    //runFile(); 
} 
catch 
{ 
    Console.WriteLine("error"); 
} 
+0

Ce ne serait pas un trou de sécurité majeur? – Marko

+0

@Marko il peut être un ensemble de sécurité si je ne peux pas accéder au PC via le bureau à distance du tout, mais dans mon cas, je peux le faire, et je suis l'administrateur de tous les PCs savoir le nom d'utilisateur et le mot de passe administrateur – shabby

+0

? Comment l'obtenir? –

Répondre

3

Selon ce que vous avez accès sur le serveur, vous pouvez utiliser un programme comme psexec ou en utilisant WMI pour lancer à distance le fichier.

Un échantillon de commande psexec serait

psexec \\computername -u remoteusername filepath(on remote computer) arguments 

Psexec peut copier le fichier au préalable si demandé et peut fonctionner sur une liste d'ordinateurs à la place (remplacement \\computername avec @computer-list.txt). Avec WMI, vous devez vous connecter à la classe Win32_Process et créer un nouvel objet pour le démarrer. Le second post dans ce fil pourrait fonctionner.

Malheureusement, ces deux options nécessitent que plusieurs règles de pare-feu (telles que RPC et WMI) soient disponibles à partir du poste de travail en cours d'exécution. Si votre entreprise ne dispose que d'un accès RDP via le pare-feu, aucun d'entre eux ne fonctionnera probablement.

+0

effectivement il ya des centaines de serveurs donc besoin de le faire automatiquement par le code, ne peux pas y aller pour installer psexec merci – shabby

+1

psexec n'a pas besoin d'être installé, il prend soin de lui-même lors de son exécution pour la première fois. S'il peut accéder à l'ordinateur distant avec des informations d'identification d'administrateur, vous pouvez exécuter psexec. – Joshua

Questions connexes