6

我有一个分两部分运行的脚本。第一部分需要管理员权限(更新 HOSTS 文件并进行一些复制/覆盖)。该部分完成后,我需要使用更新脚本的第一部分的主机名别名映射驱动器。

我已经想出如何通过使用这个SO Question来获得提升的权限。但是映射驱动器(在管理员中)将驱动器映射到管理员的会话中。我需要“降级”回到用户模式来运行我的第二个脚本。

这是我每天至少运行一次的脚本,并且可能每天运行多次。如果可能的话,我正在尝试创建一个只有 1 个 .bat 文件的解决方案。由于某些原因,脚本是用 perl 编写的。

我尝试过的事情:

  1. 使用 runas /user:regular_user 命令(这不起作用
  2. 1个bat文件对2个批处理文件使用CALL(这“有效”,但由于某种原因两者同时运行)
  3. 分别手动运行 2 个 bat 文件。
  4. 搜索 SO,但我找不到 admin->user 而只有 user->admin

TLDR: 如何在批处理文件中从管理员模式降级为用户模式?

4

3 回答 3

2

您最好的选择是使用最好的第三方远程/本地执行工具:Windows Sysinternals PSEXEC。您可以使用 PSEXEC 提供凭据并完成您需要的工作!您可以将 PSEXEC 命令放入批处理文件或 vbs 中,并让它们顺利运行。您还可以使用 PSEXEC 提升权限调用一个命令,然后在没有任何提升的情况下调用下一个命令,同时将凭据混合在一个唯一的批处理文件中。

http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

于 2013-07-16T14:50:16.163 回答
2

如果您正在使用 2 个批处理文件,请ElevatedBatch.cmd使用提升调用批处理Main.cmd(继续执行未提升的操作):

@ECHO OFF
START /WAIT ElevatedBatch.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
REM here you can do unelevated stuff:
ECHO Running unelevated now

该参数/WAIT确保脚本将一直等到ElevatedBatch.cmd结束。因为ElevatedBatch.cmd 您可以使用这样的模板提升它。

于 2015-02-13T10:03:43.507 回答
0

先做未抬高的部分,然后抬高并继续。

于 2014-08-08T14:37:31.823 回答