Java中是否有办法要求系统控制管理员功能.当然没有这样做:右键单击exe - >以管理员身份运行.
我想要的是来自UAC的框架,如Windows Vista或Windows 7.
或者我从jar中制作exe时要做一些设置?
我的软件突然出现了一个令人讨厌的问题.我正在制作一个与另一个现有软件(游戏)交互的程序.用户报告说他以管理员权限运行游戏,在这种情况下,我的程序停止为他工作.
简短的调查显示,有些人确实需要在管理员帐户下运行游戏,有些则不需要.如果我的程序能够检测到这一点并且警告用户游戏是否在管理员帐户下运行,那将是很棒的:

如果用户单击"Elevate",我想要求windows提升java.exe运行我的jar文件并调用典型的UAC对话框.

显然,这次问题不是关于java更新程序而是JRE
我的问题是:这可能吗?Windows可以提升我java.exe实例的权限吗?java有办法吗?或者我可以使用命令行命令吗?
我想避免重新启动程序(尽管它可能不是那么重要).
编辑:
如果您查看注释,您将看到无法避免重新启动应用程序 - 进程只能启动升级而不会升高.不幸的是,这有点改变了这个问题.基本上,现在听起来更像是:" 如何使用管理员权限重新启动我的应用程序? ".当然,除非有两个java.exe共享一个罐子的技巧......
我正在尝试运行外部可执行文件,但显然它需要提升.代码是这样的,从使用ProcessBuilder的示例修改(因此具有一个参数的数组):
public static void main(String[] args) throws IOException {
File demo = new File("C:\\xyzwsdemo");
if(!demo.exists()) demo.mkdirs();
String[] command = {"C:\\fakepath\\bsdiff4.3-win32\\bspatch.exe"};
ProcessBuilder pb = new ProcessBuilder( command );
Process process = pb.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:\n", Arrays.toString(command));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
try {
int exitValue = process.waitFor();
System.out.println("\n\nExit Value is " + exitValue);
} catch (InterruptedException e) {
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我需要使用Preferences API的systemRoot功能,但是如果启用了UAC,则由于Windows上缺少权限而失败.我正在尝试查找弹出UAC提示的技术细节,并提升我的权限以允许systemRoot更新成功.