:: 开始获取管理员权限
setlocalset uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
:: 完成获取,下面可以开始写你自己的代码了echo.echo 原理:先尝试在系统目录下临时新建一个文件夹,若已获取管理员权限或是运行在XP等不需要管理员权限的echo 老系统时,是可以新建成功的,此时只需删除这个临时新建的文件夹就好了,否则通过创建一个临时echo
vbs脚本获取管理员权限,然后再删除这个临时vbs脚本文件。echo.echo 提示:当获取管理员目录后,你的批处理运行目录会发生变化,为保证目录准确,echo 可通过 cd 切换目录,例“cd /d
%%~dp0”切换回批处理所在目录echo.echo 当前运行目录:
%cd%\echo 批处理所在目录:%~dp0echo.echo 例:切换回批处理所在目录echo cd /d
%%~dp0echo.
作者:风雪子郁
链接:https://www.zhihu.com/question/34541107/answer/154430381
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。