自动提权执行批处理模板自用版
本帖最后由 hlowld 于 2025-9-18 21:45 编辑有点长,占用13行,带来的好处是:
1、关闭UAC的系统上,Users组用户执行时,不会死循环弹命令行窗口
2、支持路径中带空格和!,支持参数中带空格,例如被这样调用 "d:\my file\!)inst.cmd" "1 1" "2 2"
3、用vbs或者mshta以隐藏方式调用批处理时,提权后新的命令行窗口并不会隐藏,本模板能解决该问题,注释掉第二行即可
4、系统有powershell或者vbs即可用,在用户名为system的PE下也可用
@ECHO OFF & PUSHD "%~DP0" & set "pat=%~pnx0" & call set "flag=%windir%\temp\%%pat:\=_%%" & setlocal ENABLEDELAYEDEXPANSION
::set "hidden=1"
if /i "%username%" equ "system" goto :runas
reg QUERY "HKU\S-1-5-19" >nul 2>nul && goto :runas
set "vShow=1" & if defined hidden (set "vShow=0" & set "winstyle= -WindowStyle Hidden")
powershell /? >nul 2>nul && (set "psh=1" & set "args1=" & for %%a in (%*) do (set "arg1=%%a" & set "args1=!args1! \"!arg1!\""))
if not defined psh set "args2=" & for %%a in (%*) do (set "arg2=%%a" & set "args2=!args2! ""!arg2!""")
if not defined psh if /i "!args2!" neq "" set "args2=!args2:"""=""!"
setlocal DISABLEDELAYEDEXPANSION
dir "%flag%" >nul 2>nul && (rmdir /q /s "%flag%" >nul 2>nul & echo 提升到管理员权限失败,退出 & pause & exit) || (mkdir "%flag%" >nul 2>nul)
if defined psh (powershell -nop -Command "Start-Process cmd -Verb RunAs %winstyle% -ArgumentList '/c \""""%~f0""" %args1%\"'" >nul 2>nul && (rmdir /q /s "%flag%" >nul 2>nul & exit) || (rmdir /q /s "%flag%" >nul 2>nul & echo 提升到管理员权限失败,退出 & pause & exit)) else (
echo CreateObject^("Shell.Application"^).ShellExecute "cmd.exe", "/c """"%~f0""%args2%""", "", "runas", %vShow% > "%temp%\T.vbs" & "%temp%\T.vbs" >nul 2>nul & del /q /f "%temp%\T.vbs" >nul 2>nul & timeout /t 3 /nobreak >nul & rmdir /q /s "%flag%" >nul 2>nul & exit)
:runas
不错好好学习一下 来学习,感谢分享 学习了 谢谢 谢谢分享。 667好用,谢谢分享{:1_186:} 学习了 谢谢 感谢分享
感谢分享 不错好好学习一下 感谢分享 学习一下! 大佬,是将这段代码放在 批处理文件代码的最前面吗 非常感谢楼主分享! 感谢分享 感谢分享{:1_183:}{:1_183:}{:1_183:}{:1_183:} 感谢分享 正需要这个代码 感谢分享! 好东西,我顶楼主。 谢谢分享 学习一下 谢谢楼主分享~ 学习了,谢谢分享 谢谢分享..{:1_194:} 感谢分享 学习一下,谢谢楼主! 非常的感谢 学习了,感谢分享
页:
[1]
2
