C# 启动 NetSH 命令行
C# starting up NetSH commandline
对于我的学校项目,我想使用 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;
}
}
}
现在我运行首先使用一个名为'process'的实例(运行())来配置连接,然后我使用相同的方法为一个新的同名实例启动命令。
在表单中,我正在使用以下代码创建此 class(连接)的新实例:
private void btn_startnetwork_Click(object sender, EventArgs e)
{
connection = new Connection();
connection.Run();
connection.ChangeCommand("wlan start hostednetwork");
connection.Run();
}
问题是:打开时我没有看到任何程序打开
我点击按钮。我知道我已经说过 'CreateNoWindow' 应该是 true,但即使我将它设置为 false,它也不会启动 netSH。结果,我不知道程序是否做了它应该做的。
我正在为另一个命令启动一个新进程。此过程再次开始 netsh.exe。不知道对不对
首先,你应该重写运行():
public void Run(string cmd)
{
Process process = new Process();
process.StartInfo.FileName = FileName;
process.StartInfo.Arguments = cmd;
process.StartInfo.UseShellExecute = UseShellExecute;
process.StartInfo.RedirectStandardOutput = RedirectStandardOutput;
process.StartInfo.CreateNoWindow = CreateNoWindow;
process.Start();
}
并这样称呼它:
connection = new Connection();
connection.Run("wlan set hostednetwork mode=allow ssid=SmartRoad key=smartroad123");
或更短(您的第二次调用):
new Connection().Run("wlan start hostednetwork");
有一个额外的构造函数
public Connection(string fn) : this()
{
FileName = fn;
}
这看起来更好:
new Connection("netsh.exe").Run("wlan set hostednetwork ... ");
new Connection("netsh.exe").Run("wlan start hostednetwork");
对于我的学校项目,我想使用 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;
}
}
}
现在我运行首先使用一个名为'process'的实例(运行())来配置连接,然后我使用相同的方法为一个新的同名实例启动命令。
在表单中,我正在使用以下代码创建此 class(连接)的新实例:
private void btn_startnetwork_Click(object sender, EventArgs e)
{
connection = new Connection();
connection.Run();
connection.ChangeCommand("wlan start hostednetwork");
connection.Run();
}
问题是:打开时我没有看到任何程序打开 我点击按钮。我知道我已经说过 'CreateNoWindow' 应该是 true,但即使我将它设置为 false,它也不会启动 netSH。结果,我不知道程序是否做了它应该做的。
我正在为另一个命令启动一个新进程。此过程再次开始 netsh.exe。不知道对不对
首先,你应该重写运行():
public void Run(string cmd)
{
Process process = new Process();
process.StartInfo.FileName = FileName;
process.StartInfo.Arguments = cmd;
process.StartInfo.UseShellExecute = UseShellExecute;
process.StartInfo.RedirectStandardOutput = RedirectStandardOutput;
process.StartInfo.CreateNoWindow = CreateNoWindow;
process.Start();
}
并这样称呼它:
connection = new Connection();
connection.Run("wlan set hostednetwork mode=allow ssid=SmartRoad key=smartroad123");
或更短(您的第二次调用):
new Connection().Run("wlan start hostednetwork");
有一个额外的构造函数
public Connection(string fn) : this()
{
FileName = fn;
}
这看起来更好:
new Connection("netsh.exe").Run("wlan set hostednetwork ... ");
new Connection("netsh.exe").Run("wlan start hostednetwork");