6

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

顺便说一句,该机器是Windows 7 Ultimate Edition x64。

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

澄清:我们已经有一个计划任务启动控制台提升,提升控制台不是这个答案的问题。

4

2 回答 2

9

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

runas /trustlevel:0x20000 cmd.exe

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

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

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

psexec -l -d cmd.exe

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

来自Microsoft Technet 博客

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

这些是我经过数小时研究后得到的最好的结论;任何可以提供更多详细信息的人都将受到欢迎。

于 2013-03-19T22:33:04.347 回答
1

真的不是我的专业领域,但会START RUNAS ...或可能AT符合要求吗?

于 2013-03-18T09:17:06.473 回答