微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何调用批处理文件并使其以管理员身份运行

如何解决如何调用批处理文件并使其以管理员身份运行

我遇到一个批处理文件(BatFile1)调用一个批处理文件(BatFile2)的情况。为了正常工作,BatFile2必须以管理员身份运行。 (注意:BatFile2仅在由BatFile1调用时运行。从不手动运行。)

  1. 是否可以在BatFile1的Call命令行中放入一个参数,该参数将导致BatFile2以管理员身份运行?就像是: 呼叫c:\ BatFile2.bat / RUN-AS-ADMINISTRATOR

  2. 是否还有其他方法可以从BatFile1运行BatFile2(而不是Call命令),从而导致BatFile2以管理员身份运行?

谢谢。

解决方法

如果要以管理员身份运行其他批处理文件:

powershell.exe -command "& {Start-Process .\batfile2.bat -ArgumentList "Args" -Verb Runas}"

或者,如果您愿意,可以使batfile1自身自动提升:

goto="Batch" /*
:Admin
@echo off
REM CONTINUE CODE HERE
exit /b 0
:RunAsAdmin
color 4f & echo Running Admin Shell,Please wait.... & call cscript //nologo /e:JScript "%~f0" RunAsAdmin "%*" & exit /b
:"Batch"
@echo off & setlocal enabledelayedexpansion & cls
openfiles >nul 2>&1 || goto :RunAsAdmin
goto :Admin
:"JScript" */
function RunAsAdmin(self,arguments) { WSH.CreateObject('Shell.Application').ShellExecute(self,arguments,'','runas',1) }
if (WSH.Arguments.length>=1 && WSH.Arguments(0)=='RunAsAdmin') RunAsAdmin(WSH.ScriptFullName,WSH.Arguments(1));
//

这是一个Jscript-Batch混合文件,可以另存为.bat文件。在“管理”标签中继续执行代码。

使用嵌入式Powershell的另一种方法:

@echo off
openfiles >nul 2>&1
if not "%errorlevel%"=="0" (
    color 4f
    echo Running Admin Shell,Please wait.......
    powershell Start-Process -FilePath "%0" -ArgumentList "%*" -verb runas >NUL 2>&1
    exit /b 0
)
::Batch code here

在Runas之后,当前目录可能已更改,因此,Male务必将其更改。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。