java getRuntime()。exec需要UAC的exe
如果您的Java应用程序作为Windows服务运行,则它很可能在以下系统帐户之一下运行:SYstem(最有可能),LOCAL SERVICE或NETWORKSERVICE。因此,如果该服务在SYstem帐户下运行,则从该服务启动的所有内容都将继承该帐户。无论如何,必须允许您的服务与桌面交互。
总而言之,如果您的流程以提升的方式运行,则从其启动的流程也将以提升的方式运行。
@H_301_4@要提升,您必须使用Windows API的ShellExecute或ShellExecuteEx函数。如果您要启动的.exelevel=requireAdministrator在其清单中带有标记,则外壳将显示UAC对话框。如果未标记,则可以使用runas动词/运算来强制执行UAC确认对话框。注意:runas在WindowsXP上将显示“以其他用户身份运行”对话框。
如果Runtime.getRuntime().exec(command)是通过ShellExecute实现的,则使用适当的清单标记.exe即可;如果exec使用CreateProcess,则该进程将以当前用户权限启动,即不提升权限;此外,如果requireAdministrator清单中存在.exe,则该过程将完全不会启动。
解决方法因此,我们有一个作为Windows服务运行的Java进程。它需要使用执行命令Runtime.getRuntime().exec(command)。它执行的命令需要UAC。这是在WindowsServer 2008上,听起来您无法为单个可执行文件禁用UAC,所以还有其他方法可以使这项工作吗?
相关文章:
1. javascript - angular左右滑动如何切换路由状态,????2. 用CSS3 box-sizing 属性实现两个并排的容器,如果想让容器中间有间隔该如何实现3. redis start后的窗口该如何退出?4. debian - docker依赖的aufs-tools源码哪里可以找到啊?5. node.js - nodeJS 写入文件的内容怎么不是按次序的?6. javascript - 求一款靠谱点的移动端图片查看器插件,老司机速进!7. java - 保存日志到mongo失败,乐观锁异常8. oop - Java中,关于匿名内部类调用外部类方法的疑惑9. javascript - jquery hide()方法无效10. docker gitlab 如何git clone?

网公网安备