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

Áxe*_*ena 5 console uac elevation batch-file process-elevation

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

顺便说一句,该机器是Windows 7旗舰版x64.

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

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

Áxe*_*ena 8

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

runas /trustlevel:0x20000 cmd.exe
Run Code Online (Sandbox Code Playgroud)

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

  • 在通过runas(右)启动的进程中,我们错过了一些禁用的权限: Process Explorer屏幕截图显示执行权限差异
  • 在通过runas启动的流程(右)管理员在流程上设置了一些权限: Process Explorer屏幕截图显示了有关进程的用户权限的差异

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

psexec -l -d cmd.exe
Run Code Online (Sandbox Code Playgroud)

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

来自Microsoft Technet博客:

PsExec使用CreateRestrictedToken API创建一个称为令牌的安全上下文,它是自己的精简版本,删除管理权限和组成员身份.生成看起来像Windows分配给标准用户的令牌之后,Process Explorer调用CreateProcessAsUser以使用新令牌启动目标进程.

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