在启动时运行Jar文件?

时间:2014-01-06 17:07:56

标签: java windows startup

我有一个Java应用程序,它存在于我编译为可执行jar文件的系统托盘中。我想在我的程序中添加选项以添加到系统启动项。

由于我不知道为所有操作系统做任何统一的方法,我认为我必须为每个我打算支持的代码编写代码,所以我从Windows开始。

当我尝试使用the code available here将其添加到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]的注册表时,我发现在Windows 7和8下,除非我具有管理员权限(通过从提升的命令提示符运行),我编辑了注册表不适用。

然后我花了一天的时间试图弄清楚如何让Jar重新启动自己的管理员权限,然后我就放弃了这个hacky解决方法。

我正在努力实现的任务是否可以完成,如果是,如何完成?

2 个答案:

答案 0 :(得分:3)

在大多数情况下,您实际上希望添加自动启动用户登录的功能,而不是系统启动。对于Windows,如果在以下位置添加注册表项:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

当以普通用户身份运行时,此位置不会受到权限问题的影响,并且在Windows下已经支持了很长时间(我在这里考虑Windows 95时间框架),因此应该对所有系统进行安全更改。

对于Linux,假设操作系统遵循Open Desktop AutoStart规范,那么您需要在.desktop中创建相应的$HOME/.config/autostart/文件,并且在这种情况下它应该在登录时自动启动。

对于Mac OS X,您需要在$HOME/Library/LaunchAgents中创建启动代理程序plist。 Daemons and services documentation详细说明了如何构建此文件。

答案 1 :(得分:0)

解决用户权限并不是一个好主意。注册表项是首选方式。还要记住,jar本身不是可执行的,它需要jvm,所以你可能要做的就是使用包装器并注册它。

相关问题