Java Runtime.exec以非管理员身份运行

Java Runtime.exec以非管理员身份运行,java,windows,jar,uac,Java,Windows,Jar,Uac,我有一个可以自我更新的Java应用程序 Java应用程序首先以非管理员身份运行,如果您想更新,它将执行我创建的一个.lnk快捷方式,该快捷方式指向另一个.jar文件,专门用于更新(但具有管理员访问权限) 指向.jar更新程序的.lnk快捷方式通过在此处使用此答案来请求adminpermissions>> 更新主jar后,我希望.jar更新程序再次运行主.jar,但我希望它不是管理员。我该怎么做?它当前作为管理员运行,因为更新程序jar当前作为管理员运行我用另一种方式解决了我的问题 当用户想要更新

我有一个可以自我更新的Java应用程序

Java应用程序首先以非管理员身份运行,如果您想更新,它将执行我创建的一个.lnk快捷方式,该快捷方式指向另一个.jar文件,专门用于更新(但具有管理员访问权限)

指向.jar更新程序的.lnk快捷方式通过在此处使用此答案来请求adminpermissions>>


更新主jar后,我希望.jar更新程序再次运行主.jar,但我希望它不是管理员。我该怎么做?它当前作为管理员运行,因为更新程序jar当前作为管理员运行

我用另一种方式解决了我的问题

当用户想要更新main.jar时,它会执行两次
Runtime.exec()。第一个命令调用cmd并为请求管理员访问的更新程序执行.lnk快捷方式。第二个是updater.jar窗口的观察者

jar文件每隔一段时间(假设每1s)执行一次windows命令
tasklist/fi“Windowtitle eq”
,并计算输出的行数。它有两个州

1) 检测更新程序正在运行(输出的行计数>1)
2) 检测更新程序无效(输出的行计数==1)

在这两种状态之后,这意味着main.jar已经更新,更新程序已经失效。然后调用main.jar


由于此watcher.jar是使用非admin提升调用的,因此它也将main.jar作为非admin调用。

您需要使用低级WinAPI。基本上,你必须打电话是的,我试图避免使用JNI的东西。我正在阅读具有最低权限的runas命令,但我似乎无法运行我的命令:runas/trustlevel:0x20000“'C:\\javaw.exe'-jar'C:\\main.jar'”我认为空格有问题,因为它给了我2:系统找不到指定的文件。