對於我的學校項目,我想通過使用C#的NetSH建立連接。 我用Google搜索出頭了,並用下面的代碼上來:C#啓動NetSH命令行
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace Server_Smart_Road
{
class Connection
{
private string FileName { get; }
private string Command { get; set; }
private bool UseShellExecute { get; }
private bool RedirectStandardOutput { get; }
private bool CreateNoWindow { get; }
public Connection()
{
FileName = "netsh.exe";
Command = "wlan set hostednetwork mode=allow ssid=SmartRoad key=smartroad123";
UseShellExecute = false;
RedirectStandardOutput = true;
CreateNoWindow = true;
}
public void ChangeCommand(string command)
{
Command = command;
}
public void Run()
{
Process process = new Process();
process.StartInfo.FileName = FileName;
process.StartInfo.Arguments = Command;
process.StartInfo.UseShellExecute = UseShellExecute;
process.StartInfo.RedirectStandardOutput = RedirectStandardOutput;
process.StartInfo.CreateNoWindow = CreateNoWindow;
}
}
}
現在,我第一次運行名爲「過程」的實例(的run())來配置的連接,然後我用同樣的方法等一個啓動命令具有相同名稱的新實例。
在窗體我提出這個類(連接)的新實例與此代碼:
private void btn_startnetwork_Click(object sender, EventArgs e)
{
connection = new Connection();
connection.Run();
connection.ChangeCommand("wlan start hostednetwork");
connection.Run();
}
的問題是:我沒有看到任何程序打開時 我按一下按鈕。我知道我說'CreateNoWindow'應該是真的,但即使我將它設置爲false,它也不會啓動netSH。因此,我不知道該計劃是否應該做什麼。
我正在爲另一個命令啓動一個新進程。該過程再次啓動netsh.exe。我不知道這是否正確。
你的過程將不會開始。之後用CreateNoWindow添加process.Start();另請參閱:https://msdn.microsoft.com/de-de/library/e8zac0ca(v=vs.110).aspx –
o該死的我很笨...謝謝@ ralf.w。我應該在每個命令之後處理它嗎? – Gigitex
在Run()結束時你的進程就是歷史;-)(由.net垃圾回收器處置) –