McAfee 防火墙仅在子进程中阻止本地主机

McAfee 防火墙仅在子进程中阻止本地主机

这是一个与编程相关的问题,但似乎更适合 SuperUser 而不是 StackOverflow。

我在 PC 上安装了 McAfee(LiveSafe 的试用版 - Internet Security)。我正在运行一个 Python 程序,该程序使用 CherryPy 在本地主机 (127.0.0.1) 上设置 Web 服务器。我在同一台机器上还有一个单独的程序,用于向 CherryPy 程序发送请求。

当 McAfee 防火墙开启时,此本地主机通信失败(参见下面的日志),而当其关闭时,此本地主机通信可以正常进行。

然而,当我将 CherryPy 服务器作为其自己的应用程序运行(例如,从 cmd 提示符启动它)时,即使防火墙打开,一切也能正常工作。但是,当我让我的主程序将 CherrPy/Python .exe 作为子进程启动时(这是我的应用程序的正常工作方式 - 主“浏览器”应用程序将 CherryPy 应用程序作为子进程启动),它确实不是工作。

总结一下:

  • 我的应用程序需要将此 CherryPy 服务器作为子进程运行。
  • 当 McAfee 防火墙处于活动状态时,它会阻止我的主应用程序和子进程之间的本地主机通信。
  • 但是,当我将 CherryPy 和我的主应用程序分别作为它们自己的顶级应用程序运行时,一切都正常。
  • 我尝试在 McAfee 控制面板中做出明显的更改,以允许我的程序名称(主应用程序和 CherryPy 服务器应用程序)以及它们用于通信的单个端口(56677)例外,但这没有帮助。

我阅读了 McAfee 社区博客,发现关于阻止或不阻止 localhost 的问题由来已久。然后我还看到了一些关于“进程欺骗”的内容。因此,我试图了解它为什么会阻止子进程,以及是否有办法 (a) 配置 McAfee 不这样做,同时仍保持防火墙开启,或者 (b) 以某种不同的方式启动我的进程,以防止这种子进程歧视(我使用 Win32 APICreateProcess()来启动它 - 也许ShellExecuteEx()会产生不同的结果?)。

下面是 CherryPy 日志,显示其无法启动。

[14/Aug/2015:19:45:39] ENGINE Bus STARTING
[14/Aug/2015:19:45:39] ENGINE Set handler for console events.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread 'Autoreloader'.
[14/Aug/2015:19:45:39] ENGINE Started monitor thread '_TimeoutMonitor'.
[14/Aug/2015:19:47:20] ENGINE Error in 'start' listener <bound method Server.start of <cherrypy._cpserver.Server object at 0x02547250>>
Traceback (most recent call last):
  File "cherrypy\process\wspbus.pyc", line 205, in publish
  File "cherrypy\_cpserver.pyc", line 168, in start
  File "cherrypy\process\servers.pyc", line 177, in start
  File "cherrypy\process\servers.pyc", line 233, in wait
  File "cherrypy\process\servers.pyc", line 459, in wait_for_occupied_port
IOError: Port 56677 not bound on '127.0.0.1'

相关内容