Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 以管理员身份运行批处理(自动提升),然后取消提升_Windows_Perl_Batch File_Command Prompt - Fatal编程技术网

Windows 以管理员身份运行批处理(自动提升),然后取消提升

Windows 以管理员身份运行批处理(自动提升),然后取消提升,windows,perl,batch-file,command-prompt,Windows,Perl,Batch File,Command Prompt,我有一个分两部分运行的脚本。第一部分需要管理员访问权限(更新主机文件并进行一些复制/覆盖)。在该部分完成后,我需要使用主机名别名映射驱动器,并更新脚本的第一部分 我已经知道了如何通过使用这个来获得提升的特权。但是映射驱动器(在管理中)会将驱动器映射到管理会话中。我需要“反提升”到用户模式以运行第二个脚本 这是一个脚本,我每天至少运行一次,可能每天运行多次。如果可能的话,我正在尝试创建一个仅为1.bat文件的解决方案。出于某些原因,脚本是用perl编写的 我尝试过的事情: 使用runas/user

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

我已经知道了如何通过使用这个来获得提升的特权。但是映射驱动器(在管理中)会将驱动器映射到管理会话中。我需要“反提升”到用户模式以运行第二个脚本

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

我尝试过的事情:

  • 使用runas/user:regular\u user命令(这不起作用)
  • 1个bat文件,使用对2个批处理文件的调用(这“起作用”,但由于某些原因,两者同时运行)
  • 分别手动运行2个bat文件
  • 正在搜索,但我找不到admin->user,而只找到user->admin

  • TLDR:如何在批处理文件中从管理模式反提升到用户模式?

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


    首先执行非提升部分,然后提升并继续。

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


    参数
    /WAIT
    确保脚本将一直等到
    ElevatedBatch.cmd
    结束。对于
    ElevatedBatch.cmd
    您可以使用类似的模板来提升它。

    很酷,这听起来很有希望。谢谢。我不确定在OP的场景中这是否可行。OP说他需要首先更新HOSTS文件,然后使用新的别名来完成第二部分。
    @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