UAC 和 Java

2022-09-03 07:12:38

是否可以从 Java 应用程序中请求提升的权限?我看到的建议似乎都集中在运行外部可执行文件或设置清单以在启动时请求权限。例如,这些对小程序不可用。有没有办法从正在运行的应用程序请求提升?


答案 1

UAC 不是正在运行的进程可以请求的(不管你用什么语言运行)。您必须在启动时请求提升。

大多数 Windows 应用处理此问题(并使其看起来像是在请求提升)的方式是生成自己的额外副本,请求提升,并向新进程传递足够的命令行参数,以便可以显示相应的对话框。

这就是为什么对话框中的 UAC 提升始终由按钮单击打开新对话框来启动的原因。

因此,在Java世界中,您只需要做其他人必须做的事情:再次启动您的应用程序,请求提升。有几种方法可以启动提升,“运行方式”动词可能是最简单的。


答案 2

看起来 Sun 将不得不在 JRE 中处理这种情况,因为除了运行外部进程之外,没有其他方法可以执行提升的操作。

如果 JRE 支持它,JVM 可能必须为请求提升的 java 代码运行一个单独的提升进程。

但是,就目前而言,据我所知,只有清单或运行外部应用程序是唯一可用的解决方案。

问题是,你需要提升什么?


推荐