如何添加出站 Windows 防火墙例外?

问题描述 投票:0回答:5

我需要为我正在编写的应用程序的出站连接打开 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

问题是该方法仅创建 inbound 规则,而不是 outbound 规则。 (C# 和 InnoSetup 脚本都使用相同的方法。)这对我来说完全没用。

Windows 防火墙的默认行为是允许出站流量,但这并不能保证有人不会更改它。

我更愿意在安装程序中执行此操作(使用 InnoSetup),而不是在 C# 中执行此操作。

我错过了什么吗?

有人知道如何创建出站规则吗?

inno-setup windows-firewall
5个回答
27
投票

如果您需要为您的应用程序添加一些例外,您可以使用netsh

在命令行中写入(对于XP):

netsh firewall add allowedprogram ?

在命令行中写入(W7):

netsh advfirewall firewall add rule ?

此差异是因为 netshfirewall 命令已弃用。相反,我们必须使用命令 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

1
投票

TechNet 可以: 在 Windows 7、Windows Vista、Windows Server 2008 或 Windows Server 2008 R2 上创建出站端口规则

虽然我假设您打算以编程方式创建此类规则,但如果是这种情况,您可能会对以编程方式使用组策略对象感兴趣。

最后,如果您计划在安装过程中执行此操作,InnoSetup 应该能够在安装时合并必要的注册表项。


1
投票

netsh的问题是它无法在某些 Windows 版本(例如 Windows Vista Basic)上运行。这就是为什么最好在不使用 netsh 的情况下添加异常。 本文包含示例 Inno Setup 代码


0
投票
这是可以传递给 Windows 命令行工具的众多任务之一。 netsh 做了适当的事情,但它(就像 netsh 所做的其他事情一样)几乎不可能找到。简单的版本是:


netsh firewall add allowedprogram <path> <name>


欲了解更多详情,请运行:

netsh firewall add allowedprogram ?


这些可以在

[Run]

 部分或通过致电 
Exec
 来完成。

请注意,这在 Windows 7 中已被弃用;如果您仅针对 Vista/2008 或更高版本,则应该使用

netsh advfirewall firewall

 来代替。微软有
一篇文章关于从前者到后者的转换,但我仍然需要支持XP,所以我没有这样做。


0
投票
您可以在安装程序的

netsh

部分执行
[Run]
。此示例为任何可执行文件打开端口 80:

[Run] ; Remove firewall exception first when upgrading Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""My WWW Server"" "; Flags: runhidden ; Add firewall exception Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall add rule name=""My WWW Server"" protocol=TCP dir=in localport=80 action=allow "; Flags: runhidden [UninstallRun] Filename: "{sys}\netsh.exe"; Parameters: "advfirewall firewall delete rule name=""My WWW Server"" "; Flags: runhidden; RunOnceId: "RemoveFirewallExc"
    
© www.soinside.com 2019 - 2024. All rights reserved.