我是一名 Java 开发人员,我的应用程序出现这种情况。这更像是 Windows 问题,而不是 Java 问题。
我已经花了一个星期 x 每天 8 个小时或更长时间研究这个问题,听取其他人的建议,搜索、阅读文章、类似的帖子并进行实验。
找不到合适的解决方案。但我仍然确信有一个我没能掌握的窍门。
- 我想运行
GUI app
一个any user logs in.
- 我想要
run
那个应用程序as administrator or system service
(管理员密码可用)(但separate instance for each user
它可以单独与每个用户交互吗?) - 我。只有
do not want
管理员user to be able to delete the app file or close / stop that app while its running
可以终止该应用程序。
任务scheduler
或services
不让应用程序以管理员/系统身份在每个普通用户的普通桌面上运行as "interactive"
应用程序到桌面。服务通常都是非交互式的,非 GUI 的,除非设置为交互式。
请仅在您确切知道“工作解决方案“以确切的方式陈述。以 notepade.exe 为例
附注:
我听说 VirtualBox 是开源的,并且具有管理员级别的服务和多个用户级别的 GUI 实例。所以我想这是可以实现的
非常感谢回复者和赞成者。反对者(如果有的话)。说明反对的原因,以便我可以改进
答案1
以下是来自 Linux 世界的一个想法:
在 Linux 中,一般的想法是使用 2 个程序:
- 一个“主服务”(以管理员身份在后台运行)。注意:Linux 中的服务称为守护进程
- 在用户级别运行的一个或多个“客户端服务”
“主服务”将具有管理权限,并将接受、处理和响应从“客户端服务”发送的命令。
“客户端服务”将根据友好的 GUI 发送命令。
两者使用消息系统“DBus”进行交互。我认为 Windows Sockets 在 Windows 中相当于:https://stackoverflow.com/questions/482681/d-bus-equivalent-for-windows