2

我构建了一个在 USB 记忆棒上交付的 Java 应用程序。为了确保兼容性,我在棒上发布了一个合适的 JVM。我制作了一个简单地使用应用程序 jar 调用这个 JVM 的 EXE。

现在的问题是:一些病毒扫描程序采取积极行动,只是删除了可执行文件!

我尝试了一个用“批处理文件到可执行文件”工具制作的 exe 和一个自己用 C 语言编写的(调用 ShellExecute);诺顿声纳检测并消除了这两个版本,但我可以想象其他病毒扫描程序可能会有类似的反应。

我最初选择了 Windows 快捷方式,但这些似乎不支持相对路径。批处理文件也不可接受,因为我不希望显示命令控制台。

4

4 回答 4

2

您可以尝试使用许多可配置的 java 启动器之一——它们可能不太可能被 AV 拾取:

(完全披露:我在 winrun4j 工作)

于 2009-11-09T20:51:41.623 回答
0

start/b java.exe ...在批处理文件中使用。会有短暂的闪烁,但窗口会很快消失。

至于病毒扫描程序删除您的文件:使用具有硬件开关的棒,可以使其写保护。这是为了您自己的安全:有病毒扫描程序并不意味着没有病毒。如果没有人可以在棍子上写信,那么没有人可以弄乱它。

于 2009-11-09T15:31:20.850 回答
0

如果您使用启动应用程序javaw.exe,则根本不应该有关联的控制台窗口,这样可能会绕过将 bat 文件转换为 .exe 的需要。

您还可以考虑将您的应用程序作为 Webstart 应用程序分发,其中关联的 jnlp 文件描述了 JVM 所需的最低版本。

于 2009-11-09T17:11:30.710 回答
0

由于该程序不必经常更改:将其作为误报提交给 AV 供应商,那么它可能会很快被列入白名单。或者至少你可能会发现他们认为如此令人反感的是什么。

于 2009-11-09T17:55:21.683 回答