我需要为我写的应用程序的出站连接打开
Windows防火墙.
我能找到的最好的答案是:
http://www.shafqatahmed.com/2008/01/controlling-win.html
http://www.vincenzo.net/isxkb/index.php?title=Adding_a_rule_to_the_Windows_firewall
问题是该方法仅创建入站规则,而不是出站规则. (C#和InnoSetup脚本都使用相同的方法.)这对我来说完全没有用.
Windows防火墙的默认行为是允许出站流量,但这并不能保证有人不会改变.
我宁愿在安装程序(使用InnoSetup)中执行此操作,而不是在C#中执行此操作.
我错过了什么?
有谁知道如何创建出站规则?
解决方法
如果您需要为应用程序添加一些例外,可以使用netsh.
写入命令行(对于XP):
netsh firewall add allowedprogram ?
写入命令行(对于W7):
netsh advfirewall firewall add rule ?
这个差异becouse netsh firewall命令已被弃用.相反,我们必须使用命令netsh advfirewall防火墙.
有关使用命令netsh advfirewall防火墙而不是netsh防火墙命令的更多信息,我们可以在知识库中看到:http://go.microsoft.com/fwlink/?linkid=121488
例子:
为传入流量添加规则,无需安全封装messenger.exe:
netsh advfirewall firewall add rule name="allow messenger" dir=in program="c:\programfiles\messenger\msmsgs.exe" security=authnoencap action=allow
在端口80添加传出流量规则:
netsh advfirewall firewall add rule name="allow80" protocol=TCP dir=out localport=80 action=block
向安全和限制的入站流量添加规则通过端口80对TCP进行流量加密:
netsh advfirewall firewall add rule name="Require Encryption for Inbound TCP/80" protocol=TCP dir=in localport=80 security=authdynenc action=allow