如何阻止用户使用任务管理器关闭我的可执行(exe)应用程序,尽管他们有权限?
我通常使用Lunch4j将我的excecutable jar文件转换为.exe
文件,但alt+f4
足以关闭该程序。
我的问题是,在包装为exe
之前是否有任何编程方式,或者在系统配置之后,我可以做以使其无法使用“访问被拒绝”或将应用程序标记为系统服务,如果在这种情况下有用吗?
谢谢
答案 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
运行程序。