如何防止关闭java应用程序?

时间:2015-04-23 10:23:13

标签: java

如何阻止用户使用任务管理器关闭我的可执行(exe)应用程序,尽管他们有权限?

我通常使用Lunch4j将我的excecutable jar文件转换为.exe文件,但alt+f4足以关闭该程序。

我的问题是,在包装为exe之前是否有任何编程方式,或者在系统配置之后,我可以做以使其无法使用“访问被拒绝”或将应用程序标记为系统服务,如果在这种情况下有用吗?

谢谢

2 个答案:

答案 0 :(得分:10)

一般来说,没有办法阻止您的进程被有权这样做的用户终止。

因此,如果用户不是管理员,则可以在不同的用户上下文中运行该过程(例如,将其作为服务运行)。

如上所述in this article您不能也不应该尝试阻止管理员终止您的流程或停止您的服务”。

话虽如此,您可以调整流程的访问控制列表,以防止用户将其删除。

最好明确提供必要的权利,而不是让每个人(用户或应用程序)都拥有系统中的管理权限。

使用这种做法,您可以轻松阻止几乎所有人终止您的流程。

您可以find here more information了解Microsoft Windows安全模型以及有关保护您的应用程序免受攻击的选项。

答案 1 :(得分:0)

您可能需要从Lunch4j编译器更改为“ Yet Another Java Service Wrapper”。可以在here中找到此人。 Lunch4j没有服务选项。确保捆绑JRE(Java运行时环境),因为它是一个独立程序。

签出OS USER选项。简而言之:

在MS-windows上,默认情况下(如果未配置),否则将在SYSTEM帐户下启动服务。 在Windows上,我们使用功能CreateProcessAsUserW。这需要...

SE_ASSIGNPRIMARYTOKEN_NAME and SE_INCREASE_QUOTA_NAME user rights

我们不使用CreateProcessWithLogonW,因为命令行长度限制为1024个字符,这对于Java应用程序来说可能太短了。 密码由属性wrapper.ntservice.password定义。 如果密码是在配置文件中定义的,则该密码在应用程序的命令行或Windows服务GUI中都不可见。

编辑(基于有问题的更改)

看看here是如何使用sc.exe来使您的可执行文件成为服务的。您从command line运行程序。

相关问题