700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【bat】windows脚本bat 五种获取管理员权限的方法 优雅地以管理员权限运行

【bat】windows脚本bat 五种获取管理员权限的方法 优雅地以管理员权限运行

时间:2020-11-13 13:31:16

相关推荐

【bat】windows脚本bat 五种获取管理员权限的方法 优雅地以管理员权限运行

【bat】windows脚本bat 优雅地获取管理员权限,以管理员权限运行

bat优势5种实现方式

bat优势

相较powershell的脚本ps1,bat文件可以在不修改系统安全配置的前提下运行。功能较弱,可以配合其他脚本使用。

以下罗列了5种方式,并且给出了优缺点比较。

5种实现方式

初级版

这种是很早的一种实现方式,需要中间文件vbs脚本来实现(bat和vbs混排可以实现无需中间文件,但是很复杂,不推荐)

尝试读取系统目录文件,判断执行结果以确认是否有管理员权限

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ):UACPromptecho Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs""%temp%\getadmin.vbs"exit /B:gotAdminif exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )

进化版

很巧妙的一种方式,获取管理员权限后把第一个参数设置为::,把该行作为注释,避免重复执行。

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

超进化版vbs

如果执行该脚本时已经是管理员权限,则上面代码还是会执行。

使用Net session判断是否为管理员权限,如果不是,则请求获取权限。

Net session >nul 2>&1 || mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0","","runas",1)(window.close)&&exit

powershell版

相比上面的方法,使用powershell的方式更加简洁。且win10推荐使用powershell。

Net session >nul 2>&1 || powershell start-process hello.bat -verb runas

带参数powershell版

上面的所有方法,都缺少了参数的转发。

参数的转发其实不复杂,复杂的是带空格的参数。

有兴趣可以自己先研究下,这里就暂不公开。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。