UAC和Java(UAC and Java)

2019-06-24 19:47发布

是否有可能要求提升的权限从Java应用程序中? 我见过的建议似乎都围绕运行的外部可执行文件或在启动建立一个清单来请求特权中心。 这些都是不可,例如,小应用程序。 有没有办法从运行的应用程序请求标高是多少?

Answer 1:

UAC是不是一个正在运行的进程可以请求(不要紧,用什么语言在运行中)。 你必须在启动时要求升高。

大多数的Windows应用程序处理这个(并使它看起来像他们请求海拔)的方法是酿出自己的额外副本,要求抬高,并通过充分的命令行参数的新工艺,使可显示相应的对话框。

这就是为什么在一个对话框UAC提升总是被打开一个新对话框,单击按钮启动。

因此,在Java世界中,你只需要做的正是每个人必须做:再次启动您的应用程序,请求海拔。 有几种方法来启动升高,在“运行方式”动词可能是最简单的。



Answer 2:

看起来Sun将不得不处理那种在JRE的情况,因为有做提升动作不是通过运行一个外部进程中没有其他办法。

如果JRE支持它,JVM可能必须要单独运行,提升进程的Java代码请求高程。

现在然而,只有在清单或运行一个外部应用程序是唯一可用的解决方案,据我所知。

现在的问题是,你需要什么高程?



Answer 3:

你必须使用一个外部(本地)应用程序做到这一点。 这篇文章提供了源代码和一个很好的解释: UAC提示从Java



Answer 4:

你可以使用JNA并做了ShellExec。 对于lpOperation使用“运行方式”(这是没有记录)。 因为你可能需要的完整路径存储在在registrylook(当前)JavaVM的注册表访问 ,JNA的一部分。



Answer 5:

后藤在安装Java的文件夹。 打开的javaw.exe / java.exe的的属性并设置“运行为administator”选项正确。



文章来源: UAC and Java