如何添加规则以阻止 chrome 或 firefox 等程序使用 Window 防火墙或 netsh advfirewall-C# 访问任何 IP 地址?
Posted
技术标签:
【中文标题】如何添加规则以阻止 chrome 或 firefox 等程序使用 Window 防火墙或 netsh advfirewall-C# 访问任何 IP 地址?【英文标题】:How to add rule to block program like chrome or firefox from accessing any Ip address using Window firewall or netsh advfirewall-C#? 【发布时间】:2021-11-04 09:34:11 【问题描述】:我想使用 netsh advfirewall 防火墙添加一条规则,以阻止任何程序(如 chrome 或 firefox)访问特定 Ips?感谢您的帮助!!!
这是我尝试过的代码,但它不起作用。请指导我。
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c netsh advfirewall firewall add rule name=Block inbound traffic from 192.168.0.2 over TCP port 4000 dir=in action=block program=C:/Program Files/Mozilla Firefox/Firefox.exe enable=yes protocol=TCP remoteip=192.168.0.2 profile=domain,private,public";
startInfo.Verb = "runas";
process.StartInfo = startInfo;
process.Start();
【问题讨论】:
【参考方案1】:我无法帮助您解决 netsh 的问题(也不知道您为什么从 C# 调用它),但 netsh 调用最明显的错误是 program=C:/Program Files/Mozilla Firefox/Firefox.exe
参数中缺少对空格的引用。由于空格被用作参数分隔符,它被解析为三个单独的参数,program=c:/Program
和 Files/Mozilla
和 Firefox/Firefox.exe
。您可以在Arguments 描述中看到最简单的修复:在路径周围添加转义引号,即"... program=\"C:/Program Files/Mozilla Firefox/Firefox.exe\" ..."
。
其他建议:
AFAICS,你不需要cmd.exe
来调用netsh
,所以你可以简单地调用netsh.exe
为什么在路径中使用正斜杠?它适用于大多数东西,但不适用于所有东西,所以我建议使用反斜杠 \
,因为这是 Windows 默认路径分隔符。
我推荐ArgumentList
,而不是在一个字符串Arguments
中提供所有参数(并冒着被引用等微妙之处绊倒的风险)。
最后会是这样的:
var startInfo = new ProcessStartInfo()
WindowStyle = ProcessWindowStyle.Hidden,
FileName = "netsh",
ArgumentList =
"advfirewall", "firewall",
"add", "rule", "name=Block", "inbound", "traffic",
"from", "192.168.0.2", "over", "TCP", "port", "4000", "dir=in", "action=block",
@"program=C:\Program Files\Mozilla Firefox\Firefox.exe",
"enable=yes",
"protocol=TCP",
"remoteip=192.168.0.2",
"profile=domain,private,public",
,
Verb = "runas",
;
Process.Start(startInfo);
【讨论】:
感谢您的回复 我明白了您的意思,但我无法使用 ArgumentList,因为它显示错误 ProcessStartinfo does not contains definition of "ArgumentList",实际上我的 Windows 系统上有多个网络适配器。我想要firefox 或 chrome 使用特定的适配器因此我通过阻止 ip 尝试了上述内容,但我未能让我的浏览器访问特定的网络适配器。这必须以编程方式完成。以上是关于如何添加规则以阻止 chrome 或 firefox 等程序使用 Window 防火墙或 netsh advfirewall-C# 访问任何 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Chrome 的检查器中添加/插入之前或之后的伪元素?