为私人和 public 配置文件添加 NSIS 防火墙例外

Add NSIS firewall exception for both private and public profiles

我想将我的应用程序添加到 windows 防火墙例外列表。 我正在使用 NSIS Simple Firewall Plugin 并执行以下操作。

SimpleFC::AddApplication "${PRODUCT_NAME}" "$INSTDIR/${PRODUCT_NAME}.exe" 3 2 "" 1
Pop [=11=] ; return error(1)/success(0)

我的应用程序已成功添加到防火墙例外列表,但问题是我想为 public 和专用网络配置文件添加例外,如下所示:

但是在提到的插件中没有相同的选项,并且当前活动的配置文件(public 或私有)默认被 selected。

我研究过其他 nsis 防火墙插件,但 none 有此功能。有人能告诉我前进的方向吗?我可能会考虑为此编写一个自定义插件。

但我只是想知道,它是实现还是有任何基本的阻碍?

不过,您始终可以手动 select 两个复选框。

你试过打电话给 SimpleFC::AdvAddRule 吗?将配置文件参数设置为 NET_FW_PROFILE_TYPE2 中的值。您可以尝试 0x7FFFFFFF,但您使用的插件是用 Pascal 编写的,我不知道它是否支持十六进制,因此您可能不得不回退到 2147483647。

我一直无法让任何 NSIS 防火墙插件为我正常工作。 我最终只是在我的目标系统上使用 netsh:

在安装部分:

ExecWait 'netsh advfirewall firewall add rule name=MyProg dir=in action=allow program="$INSTDIR\MyProg.exe" enable=yes profile=public,private'

在卸载部分:

ExecWait 'netsh advfirewall firewall delete rule name=MyProg'