2011-04-13 5 views
1

기본적으로 원격 컴퓨터에 복사 된 배치 파일을 실행하려고하는데, 이것은 코딩의 첫 번째 시도이므로 좋을하시기 바랍니다. 그러나 비판을 원한다면, 나는 아직도 언어를 배우고 있으며, 이것을 얻기까지 3 시간을 소비해야만한다. 구글, 롤 (LOL)에게 감사한다.PsExec 시작된 후 원격 컴퓨터에서 C# 실행중인 배치 파일

코드 : 사전에

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void cleanerBtn_Click(object sender, EventArgs e) 
     { 
      //Copying Batch File to Remote Host 
      string fileToCopy = "C:\\Clean.bat"; 
      string newLocation = hostName.Text; 
      string newFile = (newLocation + "\\clean.bat"); 

      System.IO.File.Copy(fileToCopy, newLocation); 

      //Run PsExec 
      string psExec = "psexec -s "+newLocation+" cmd"; 
      System.Diagnostics.Process.Start("CMD.exe", psExec); 

      //Run Batch File using PsExec 


      //Removing Batch File from Remote Host 
      System.IO.File.Delete(newFile); 

     } 

    } 
} 

감사합니다.

+0

일을 좋은 태도 :

은 기본적으로 당신이 할 싶어요. 내가 당신을 도울 수 있도록 psexec을 알았 으면 좋겠어요. –

+0

스타일 제안 : 상단에'using SystemDiagnostics;'와'using System.IO;'를 추가하고'Process.Start ("CMD.exe", psExec);','File.Copy (fileToCopy, newLocation); "File.Delete (newFile);'이후에. – joce

+0

그것에 관한 어떤 해결책이 있나요? – Kiquenet

답변

2

는 :

는 실행을 위해 원격 시스템에 지정된 프로그램을 복사 -c. 이 옵션을 생략하면 응용 프로그램 이 원격 시스템의 시스템 경로에 있어야합니다.

해당 플래그를 사용하여 PSExec을 실행하려는 배치 파일을 원격 시스템에 복사하고 실행합니다. 이를 수행하기 위해 추가 코드를 작성할 필요가 없습니다.

psexec \\server cmd.exe /c file_you_want_to_run.bat 
+0

이것은 맞습니다. psexec의 사용자 이름/암호 플래그를 사용해야 할 수도 있지만, 이렇게하기 위해 자신의 코드를 작성할 필요는 없습니다. – coffeetocode

0

/C와 함께 CMD.exe를 실행 해보십시오. cmd.exe를 도움말에서 :

/C 문자열에 의해 지정된 명령을 수행 한 후/C가 psexec에의 내용에 추가 할 필요가

종료 :

System.Diagnostics.Process.Start("CMD.exe", "/C " + psExec); 

나는 그 때 예상 한 결과를 얻을 것이라고 믿는다. 그렇지 않은 경우 psexec.exe이 PATH 환경 변수에있는 디렉토리에 있는지 확인하고자 할 수 있습니다.

또한 ProcessStartInfo을 살펴보면 프로세스 실행을 위해 설정할 수있는 다른 매개 변수를 지정할 수 있습니다. psexec에 도움에서

+0

정말 모든 답변을 주셔서 감사합니다, psexec 부분을 사용하여 배치 파일을 실행하는 방법, 원격 컴퓨터 (문자열 hostName)에 복사 된 배치 파일을 실행하려면 어떻게됩니까? – user704614

+0

외국 기계에서 코드를 실행할 수 있다고 생각하지 않습니다. 네트워크 컴퓨터에서 배치 파일을 실행할 수는 있지만 다른 방법은 사용할 수 없습니다. 그것은 심각한 보안 결함 일 것입니다. – joce

관련 문제