带有 Java SE 二进制行项目的 Windows 7 防火墙:

带有 Java SE 二进制行项目的 Windows 7 防火墙:

当我进入防火墙的“允许的程序”窗口时,我注意到不仅有一个,而是有两个项目,其标题都相同,都是“Java (TM) Platform SE 二进制文件”。

其中一个仅选中家庭/工作(私人),另一个仅选中公共。

我的第一个问题是,为什么其中一个被勾选为“公开”?为什么这两个都需要公开访问?我并没有真正考虑删除它的后果,但最终删除了被勾选为“公开”的条目,心想,嗯 (a) 它们看起来像是重复的(它们都被称为“Java (TM) Platform SE 二进制文件”),但 (b) 其中一个被设置为公开,这似乎有点不安全,所以我会完全删除它。

现在我想知道这两条条目是否都应该在那里。我感到疑惑的原因之一是,当我查看唯一剩余的条目的 [详细信息] 时,我看到它指向 C:\program files\java\jdk1.6.0_22\bin\javaw.exe,现在我想知道另一条条目是否指向 javaw.exe 以外的其他内容。

还有人看到什么配置能帮我解决问题吗?谢谢您的帮助和建议。

更新: 我刚刚想到了这一点。另一行项目可能已调整为公共,因为它正在与 Oracle 通信以获取更新(例如每隔几个月左右出现在右下角菜单托盘上的那些通知,说有新版本的 Java 您想要安装吗?)。任何使用 Java SE 的 Windows 7 用户能否告诉我他们是否在防火墙允许的程序窗格中看到两个行项目,每个行都说“Java (TM) Platform SE 二进制文件”,并告诉我除 javaw.exe 之外的另一个 .exe 是什么?

再次感谢大家。


在做了更多基于 Java 的工作后,我发现在某些情况下,操作系统会将额外的 SE 二进制行项目动态添加到允许的程序列表中。我最初从列表中删除的内容又被重新添加(都是 javaw.exe),我相信现在一切都正常了。

答案1

在 Windows 中,JRE 有两个用于运行 Java 应用程序的命令:java.exe用于控制台和javaw.exe用于 GUI 程序。(这是因为 Windows 中存在“图形与控制台”的区别。)它们的工作方式完全相同,但如果您运行控制台版本,java.exeWindows 将自动为其打开一个控制台窗口(如果尚未打开)。

防火墙配置中同时存在这两个程序的原因很简单:两个基于 Java 的程序请求访问,其中一个使用 GUI 模式,另一个则不使用。


大的字节码和解释语言运行时的缺点是,它们在操作系统中都显示为同一个进程。所有 Java 程序都以java.exe(或javaw.exe)运行,所有 Python 程序都以 运行/usr/bin/python,所有 Perl 程序都以 运行perl.exe,等等。(在 Windows 上,Microsoft .NET 运行时是个例外,它使用相同的。EXE文件格式并且能够保留进程标识。

从防火墙的角度来看,这使得基于应用程序的过滤变得毫无用处,因为您无法将信任分配给特定应用程序,而只能分配给整个运行时(以及通过它运行的所有应用程序)。

在 Windows XP 中,我已删除两个都Java 条目并重新添加为港口基于规则。由于 XP 的防火墙只处理传入连接,我不确定 Windows 7 中是否也能正常工作,但你应该尝试一下。(允许传出连接java.exe,恕我直言,还可以。)

相关内容