2009-08-06 39 views
3

運行DOS命令我有一組類似的命令:在.NET

C: 
cd Project 
testproj.exe 

我的系統裏獲得這些命令逐個從遠程系統。 我需要在從遠程系統接收命令時執行cmd.exe中的每個命令。如何使用.NET執行這些?

我還需要將testproj.exe的結果返回給遠程機器。運行命令後如何獲取結果?

回答

6

Process.Start cmd.exe,並掛接StandardIn,StandardOut和StandardError。然後,當一個命令進來時,只需將它寫入StandardIn並讀取StandardOut/Error作爲返回。整個事情不應該超過15 LOC。

話雖這麼說,只是在安裝Telnet服務器可能會更容易 - 因爲它聽起來像這就是你基本上覆制....

+0

它的工作!非常感謝! – blitzkriegz 2009-08-06 02:19:14

5
var process = System.Diagnostics.Process.Start("testproj.exe"); 
process.WaitForExit(); 
var result = process.ExitCode; 

這不會真正兌現「C:」或「CD路徑」之類的東西。相反,您希望在臨時文件夾中創建批處理文件,然後調用批處理文件。

+2

這是行不通的。你需要一個process.WaitForExit()以獲得ExitCode。 – 2009-08-06 00:13:21

1

C:CD項目操作可以使用使用SetCurrentDirectory方法目錄類lanching應用程序內進行。

然後只需使用進程類啓動testproj.exe可執行文件。

1

而不是試圖支持DOS的所有命令,只是有一個小子集實現,這將保證什麼都不會出錯。像不允許刪除,RD,格式等。

所以,基本上你只會有一個DOS命令的子集。一旦設置了命令,您就可以使用擴展機制或可插拔模塊對這些特定命令進行編碼。

這也可以幫助您安全防範惡意攻擊的機器和最糟糕的情況是可以發送數據但從機器發送數據/系統永遠不會受到傷害。

更新:特定命令的實現由您決定。您可以使用.NET API或具有System.Diagnostics.Process