gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:23:00 27 4
gpt4 key购买 nike

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

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

指向 .jar 更新程序的 .lnk 快捷方式通过使用此处的答案来请求管理员权限 >> https://stackoverflow.com/a/30028948/1862452

更新主 jar 后,我希望 .jar 更新程序再次运行主 .jar,但我希望它是非管理员。我该怎么做呢?它当前正在以管理员身份运行,因为更新程序 jar 当前正在以管理员身份运行

最佳答案

我用不同的方式解决了我的问题。

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

观察器 .jar 文件执行 Windows 命令 tasklist /fi "Windowtitle eq <JAR UPDATER WINDOW NAME>"每隔一段时间(假设每 1 秒)并计算输出的行数。它有 2 个状态

1) 检测更新程序正在运行(输出行数 > 1)
2) 检测更新程序已死(输出行数== 1)

这2个状态之后,表示main.jar已经更新,更新器已经死了。然后它调用main.jar。

由于此观察程序 .jar 是以非管理员权限调用的,因此它也会以非管理员身份调用 main.jar。

关于java - Runtime.exec 以非管理员身份运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58070937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com