如何抑制 Windows 防火墙的 Windows 安全警报?

How to suppress the Windows Security Alert for Windows Firewall?

当我根据此处找到的 ZeroMQ 指南用 C++ 创建 Hello World 示例时: http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive

和 运行 应用程序,我收到一个 Windows 安全警报,询问我是否愿意允许该应用程序在 public 或专用网络上进行通信。

看起来像这样:

这里是事情变得有趣的地方。

我只需要我的程序在端口 5555 上侦听来自本地主机的连接,我 NOT 需要允许端口 5555 上的传入连接。这是因为我只想通信在本地主机上的应用程序之间。

客户端和服务器都运行在同一台机器上。

这是我目前的流程。我启动服务器,出现 Windows 安全警报,因为我 运行 将应用程序设置为非管理员帐户,所以我只有标准权限。然后我单击警报上的取消。

在警报上单击取消会在 HelloWorldServer.exe 的所有端口上设置明确的拒绝入站规则。这完全没问题

然后我启动客户端。由于客户端正在连接到本地主机。我实际上不需要在本地机器之外发送消息,它的所有消息都可以很好地到达服务器。

鉴于 HelloWorldServer.exe 传入连接的明确拒绝规则,消息仍然可以从本地主机上的客户端到达。这是一个理想的结果。

现在的问题是,是否可以自动响应 Windows 安全警报以单击取消?由于不需要 allow,有什么方法可以阻止它弹出吗?

该提示是不可取的,因为它暗示应用程序需要在不需要时创建漏洞。

请假设命名管道不是 tcp 作为进程间通信方式的有效替代方法。

绑定套接字时,调用者可以指定套接字绑定到的IP地址。 ZeroMQ 提供的编码示例指定

socket.bind ("tcp://*:5555"); 

其中 * 似乎指定了所有可能的地址(BSD 套接字派生的说法中的 INADDR_ANY),这将触发 Windows 防火墙,因为它允许远程和本地地址。

使用本地主机地址 127.0.0.1 调用 socket.bind

socket.bind ("tcp://127.0.0.1:5555"); 

限制允许连接到本地计算机的套接字,并且应该使大多数 Windows 防火墙配置的防火墙警告静音。