【问题标题】:Firewall blocks the TCP service when we install the TCP Listener as Win Service当我们将 TCP 侦听器安装为 Win 服务时,防火墙会阻止 TCP 服务
【发布时间】:2013-08-03 06:14:06
【问题描述】:

我创建了一个 TCP 侦听器,它继续在单独的线程上侦听挂起的请求。如果客户端与服务器连接,则每个客户端都在不同的线程上提供服务。最初我开始使用控制台应用程序来启动侦听器(虽然它不适合,但我将它用于测试目的)。打开控制台应用程序和防火墙后,Windows 提示我允许访问该应用程序。后来客户端和服务器在不同IP上的通信是成功的。后来我将我的应用程序设置为winservice。但是现在windows没有提示我允许访问。现在我无法从不同的 IP 进行通信。本地主机工作正常。有什么帮助吗?

【问题讨论】:

  • Windows 将无法提示您进行访问,因为服务不再能够与桌面交互。如果您需要提升权限,请将服务安装为系统,而不是本地用户。听起来您仍然需要更新防火墙。

标签: tcp windows-services firewall


【解决方案1】:

您需要向 Windows 防火墙添加一个条目以允许传入流量。 见http://technet.microsoft.com/en-us/library/cc753558.aspx

编辑:

netsh 是一个用于更改网络设置的命令行实用程序。添加防火墙规则以接受来自任何地方到某个本地端口的流量:

netsh advfirewall firewall add rule name="Rule name for future reference" dir=in action=allow protocol=tcp localport=12345  enable=yes profile=any "description=Description visible to the user"

删除规则:

netsh advfirewall firewall delete rule name="Rule name for future reference"

要从 MSI 安装程序运行脚本,请查看 this question

【讨论】:

  • 看来我们需要手动设置入站规则。在安装或至少让 Windows 提示允许访问对话框时,有什么办法吗? @LRA
  • 如果您使用的是能够调用命令行的安装程序,则可以在服务安装期间创建防火墙规则。有一个用于网络管理任务的命令行实用程序:netsh
  • 我正在使用 msi 安装程序。我也不熟悉网络管理任务:netsh。更具描述性的指导会有所帮助。 @LRA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2017-02-08
相关资源
最近更新 更多