因此,我们有一个作为Windows服务运行的Java进程。它需要使用执行命令Runtime.getRuntime().exec(command)
。它执行的命令需要UAC。这是在Windows
Server 2008上,听起来您无法为单个可执行文件禁用UAC,所以还有其他方法可以使这项工作吗?
如果您的Java应用程序作为Windows服务运行,则它很可能在以下系统帐户之一下运行:SYSTEM(最有可能),LOCAL SERVICE或NETWORK
SERVICE。因此,如果该服务在SYSTEM帐户下运行,则从该服务启动的所有内容都将继承该帐户。无论如何,必须允许您的服务与桌面交互。
总而言之,如果您的流程以提升的方式运行,则从其启动的流程也将以提升的方式运行。
要提升,您必须使用Windows API的ShellExecute或ShellExecuteEx函数。如果您要启动的.exe
level=requireAdministrator
在其清单中带有标记,则外壳将显示UAC对话框。如果未标记,则可以使用runas
动词/运算来强制执行UAC确认对话框。注意:runas
在Windows
XP上将显示“以其他用户身份运行”对话框。
如果Runtime.getRuntime().exec(command)
是通过ShellExecute实现的,则使用适当的清单标记.exe即可;如果exec
使用CreateProcess,则该进程将以当前用户权限启动,即不提升权限;此外,如果requireAdministrator
清单中存在.exe,则该过程将完全不会启动。
问题内容: 从Bash参考手册中,我得到有关bash内置命令的以下信息: 如果提供了命令,它将替换外壳程序而不创建新进程。 现在,我有以下脚本: 执行此,我得到了: 现在,如果我有此脚本: 我得到以下输出: 我的问题是: 如果在调用 它取代了壳,而无需创建一个新的进程 ,为什么放时,将被打印出来,但是没有它,它不是。因此,如果有人可以解释这种行为的逻辑是什么,我将很高兴。 谢谢。 编辑:@tore
为了方便的确认麦克风和ref的问题,或者配合算法来调试,需要抓取声音 8008 可以配置为标准的 usb 声卡,在 linux 上识别为一个 uac 设备, linux 可以通过 usb 声卡进行声音的采集和声音的播放,录制的格式是单声道, 16K , 16bit 8008 编译的固件需要支持 usb 声卡模式
问题内容: 我已经开始在linux终端中组合不同的命令。我想知道为什么这样的命令需要反斜杠和分号: 当一个简单的cp命令只是: 没有\; 是要清楚地指示命令的结束,还是只是在文档中要求?基本原理是什么? 谢谢! 问题答案: 分号之前反斜杠用于,因为是列表操作符(或之一,),用于分离外壳命令。例如: 该实用程序正在使用或终止由调用的shell命令。 因此,为避免解释特殊的外壳字符,需要使用反斜杠将其
问题内容: 我已经在多个地方多次看到过这种情况,但是从未找到令人满意的解释来说明为什么会这样。 因此,希望这里会介绍一个。为什么我们(至少通常)不使用和? 编辑:我看到人们以为这个问题与Web服务器有关,但事实并非如此。我可以理解为什么传递给未经处理的字符串可能很糟糕。在非Web应用程序中不好吗? 问题答案: 通常有更清晰,更直接的方法来获得相同的效果。如果构建复杂的字符串并将其传递给,则代码将难
exec() 方法 用于检索字符串中的正则表达式的匹配。 语法: RegExpObject.exec( string ) 参数说明: string - 要检索的字符串 返回值: 返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。 说明: exec() 方法的功能非常强大,它是一个通用的方法,而且使用起来也比 test() 方法以及支持正则表达式的 String 对象的方
描述 (Description) 此函数执行系统命令(直接,不在shell中)并且永远不会返回到调用脚本,除非指定的命令不存在且已直接调用,而不是通过shell间接调用。 该操作如下 - 如果只有一个标量参数不包含shell元字符,则该参数将转换为列表,并且该命令将直接执行,而不包含shell。 如果只有一个包含shell元字符的标量参数,那么参数将通过标准shell执行,通常是Unix上的/