以提升的脚本作为受限用户启动流程

时间:2013-03-18 09:07:47

标签: batch-file console uac elevation process-elevation

我有一个提升的控制台运行一些bat文件。让此控制台以提升模式运行是必需的,因为它能够执行某些任务,如管理网络共享等,而无需请求权限。但有时脚本还必须启动一些不希望运行升级的应用程序。所以我们希望我们的升级蝙蝠开始以非升高模式应用。在Windows上有没有内置的方法可以做到这一点?使用DOS命令START启动进程到日期。

顺便说一下,该机器是Windows 7旗舰版x64。

我知道这个问题已经在许多问题(this collects many of them)中以编程方式进行了讨论,但我们的要求是在cmd上运行的bat脚本,以及任何可能对我们的任务有帮助的独立可执行文件,如nircmd,7z等。

澄清:我们已经有一个计划任务启动控制台升级,升级控制台不是问题所在。

2 个答案:

答案 0 :(得分:8)

内置Windows方式START RUNAS ...允许您以受限用户身份运行流程。这是一个例子:

runas /trustlevel:0x20000 cmd.exe

无论如何,在执行该方式的进程上执行权限与从启用了UAC的UI启动的执行权限之间存在一些内部差异(explorer.exe通过正常的用户交互,我的意思是,从文件浏览器执行或从开始菜单执行)

  • 在通过runas(右)启动的进程中,我们错过了一些禁用的权限: Process Explorer screenshot showing execution permissions differences
  • 关于通过runas启动的流程(右)管理员在流程上设置了一些权限: Process Explorer screenshot showing differences on user permissions over the processes

第三方应用方式:我们可以使用PSExec来实现我们的目标,Microsoft Technet blogs是我们可以在Windows Sysinternals的PSTools上找到的独立可执行文件。这是一个例子:

psexec -l -d cmd.exe

我已经深入研究了这个问题,我发现任何正在运行的权限或安全标志都没有区别。

来自CreateRestrictedToken API

  

PsExec使用{{3}}创建一个称为令牌的安全上下文,它是自己的精简版本,删除了管理权限和组成员身份。生成一个类似于Windows分配给标准用户的令牌后,Process Explorer调用CreateProcessAsUser以使用新令牌启动目标进程。

这些是我经过数小时研究后得到的最好的收获;任何能够提供进一步细节的人都将受到欢迎。

答案 1 :(得分:1)

真的不是我的专业领域,但START RUNAS ...AT是否适合该法案?