2016-03-01 118 views
0

從本質上講就是我想要做的是能夠獲得一個字符串讀命令進入命令行C#

byte[] RecPacket = new byte[1000]; 

//Read a command from the client. 

Receiver.Read(RecPacket, 0, RecPacket.Length); 

//Flush the receiver 

Receiver.Flush(); 

//Convert the packet into a readable string 

string Command = Encoding.ASCII.GetString(RecPacket); 

並讓應用程序放入命令行本身,而無需用戶做這件事。就我所做的研究而言,我無法找到直接做到的方法。我發現在你做這個

switch (Command) 
{ 
case "SHUTDOWN": 

string shutdown = Command; 

//Shuts it down 

System.Diagnostics.Process SD = new System.Diagnostics.Process(); 

SD.StartInfo.FileName = "shutdown -s"; 

SD.Start(); 

break; 

} 

但是這似乎並沒有工作,它也不會允許你這樣做在Windows命令行提供的任何命令迂迴的方式。我的目標是遠程訪問命令行並能夠發送任何命令。有人可以幫我解決這個問題嗎?

+0

你想運行'cmd/c shutdown -s'來關閉... shutdown是cmd裏面的命令,而不是它本身的可執行文件。 – Haukinger

+0

我相信這裏已經回答了這個問題; http://stackoverflow.com/questions/1469764/run-command-prompt-commands –

回答

0

可以使用Process類開始cmd應用程序,並重定向輸入Process.StandardInput這樣你就可以在控制檯執行命令:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.UseShellExecute = false; 
info.RedirectStandardInput = true; 

var process = Process.Start(info); 

並以這種方式使用它:

string command = "shutdown -s"; 
process.StandardInput.WriteLine(command); 
+0

好吧,我做了這個,但是當我發送它的命令時,它將顯示標籤爲「更多?」的服務器的文件路徑。這是什麼意思? – Joris

+0

對不起,但我不明白你的意思,你使用了什麼命令? –

+0

這張圖片將解釋它。 http://imgur.com/CJE7UDP左邊是我的輸入,右邊是它帶來的字符串「More?」 – Joris