【问题标题】:How to prevent closing java applications?如何防止关闭java应用程序?
【发布时间】:2015-07-01 11:17:17
【问题描述】:

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

我一般使用Lunch4j将我的可执行jar文件转换成.exe文件,但是alt+f4足以关闭程序。

我的问题是,在包装为exe 之前或之后在系统配置中以编程方式在 java 中是否有任何东西可以使其不可关闭“拒绝访问”或将应用程序标记为系统服务在这种情况下是否有用?

谢谢

【问题讨论】:

标签: java


【解决方案1】:

您可能希望将Lunch4j 编译器更改为“Yet Another Java Service Wrapper”。这个可以找到here。午餐 4j 没有服务选项。请务必捆绑 JRE(Java 运行时环境),因为它是一个独立的程序。

查看操作系统用户选项。简而言之:

在 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 运行程序。

【讨论】:

  • 它不包装为可执行文件!我必须去服务启动它吗?谢谢。
【解决方案2】:

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

因此,如果用户不是管理员,则在不同的用户上下文中运行进程就足够了(例如,将其作为服务运行)。

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

话虽如此,您可以调整进程的访问控制列表以防止用户杀死它。

明确授予必要的权限,而不是让每个人(用户或应用程序)在您的系统中拥有管理权限是一种很好的做法。

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

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

【讨论】:

  • You can adjust your process’ access control list to prevent users from killing it。一篇很棒的文章谢谢。
猜你喜欢
  • 2014-04-18
  • 2019-09-18
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多