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. android - mac平台运行快捷键咋按2. 数据库 - mysql中怎样修改带点的字段名的位置?3. mysql优化 - mysql 多表联合查询,求一个效率最高的查询4. 下一个页面的三角在上面一个页面会出现,在缩放的时候会遮住文字。5. php由5.3升级到5.6后,登录网站,返回的是php代码,不是登录界面,各位大神有知道的吗?6. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始7. weex - Android 原生Vue.js 使用 justify-content: flex-end; 不起作用8. android - jni生成的char*在NewStringUTF时报错9. python - Django ManyToManyField 字段数据在 admin后台 显示不正确,这是怎么回事?10. java - Ckeditor上传图片时出现mutipartRequest 转换异常

网公网安备