0

我编写了一个 C# 程序,它使用命令行参数来打开和关闭防火墙。

Process proc = new Process();
string top = "netsh.exe";
proc.StartInfo.Arguments = "**Advfirewall set allprofiles state on**";
proc.StartInfo.FileName = top;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
// MessageBox.Show("Disable");
button1.Text = "Set On";
status = false;

我还以管理员权限运行该应用程序。该应用程序会自动以管理员权限运行,但不会将防火墙状态设置为打开或关闭。

当我在 cmd(netsh) 中运行相同的命令时,防火墙会打开或关闭。

有谁知道为什么这不起作用?

4

1 回答 1

4

运行相同的代码但删除**似乎可行。即你需要改变这个:

proc.StartInfo.Arguments = "**Advfirewall set allprofiles state on**";

对此:

proc.StartInfo.Arguments = "Advfirewall set allprofiles state on";

请注意,您应该以管理员身份运行启动进程的应用程序,并以管理员身份启动进程,您还可以使用:

proc.StartInfo.Verb = "runas";
于 2016-07-18T12:20:34.870 回答