如何解决如何调用批处理文件并使其以管理员身份运行
我遇到一个批处理文件(BatFile1)调用另一个批处理文件(BatFile2)的情况。为了正常工作,BatFile2必须以管理员身份运行。 (注意:BatFile2仅在由BatFile1调用时运行。从不手动运行。)
-
是否可以在BatFile1的Call命令行中放入一个参数,该参数将导致BatFile2以管理员身份运行?就像是: 呼叫c:\ BatFile2.bat / RUN-AS-ADMINISTRATOR
-
是否还有其他方法可以从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] 举报,一经查实,本站将立刻删除。