无忧启动论坛
标题:
自用自动提权批处理模板
[打印本页]
作者:
hlowld
时间:
昨天 17:09
标题:
自用自动提权批处理模板
本帖最后由 hlowld 于 2025-12-25 10:06 编辑
@ECHO OFF & PUSHD "%~DP0" & set "titl=f%random%"
reg QUERY "HKU\S-1-5-19" >nul 2>nul && goto :runas
set stat=0 & start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","%*",,"runas",1)(window.close)
::exit
:checktitl
if %stat% equ 2 (exit) else (timeout /t 1 /nobreak >nul & tasklist /v /fi "imagename eq cmd.exe" | findstr /i /c:"管理员: %titl%" >nul && (if %stat% equ 0 set stat=1) ||(if %stat% equ 1 set stat=2) & goto :checktitl)
:runas
title %titl%
::自动提权批处理模板,适用于启用UAC且mshta和vbs正常的系统,文件名支持汉字字母数字空格和`~!#$)-_+[{]}'. 参数支持汉字字母数字和`~!@#$*()-_+\:'./? 不支持参数被双引号包裹
::如果注释第4行,则自动提权执行结束后才退出,用于start /wait方式被调用,如 start /wait "" "他 `~!#$)-_+[{]}'..cmd" a1 我`~!@#$*()-_+\:'./?
::以下为提权执行的脚本
echo 入参: %*
reg QUERY "HKU\S-1-5-19"
timeout /t 10 /nobreak >nul
特点见注释
部分流行模板个人印象:
fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
好像是kkocdko原创的,优秀,很长一段时间都在用
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
最巧妙,一行搞定,利用入参注释符,省去了是否有权限的判断,但导致不支持被带参数提权
我见过的所有提权模板,当被start /wait 方式调用时,尝试提权后就会立即执行后续语句,无法等待提权执行结束后才执行后续语句,我这个模板实现了这个功能,当然是可选的,如果不需要这个,取消第4行的注释即可
mshta vbscript:CreateObject("Shell.Application").ShellExecute方式,适用于启用UAC且mshta和vbs正常的系统,在禁用UAC的系统上基本会死循环,除非用较长的脚本来特殊处理。
12.25更新:等待提权执行结束后才执行后续语句的功能不完善,没有将随机的窗口标题传递给提权后的进程,只是提权前和提权后的进程在很短时间内相继运行,获取到的随机数相同,碰巧基于随机数的窗口标题变量相同。
看来还是得用powershell才行。
作者:
a66
时间:
昨天 17:19
好方法
作者:
erdos47
时间:
昨天 17:29
感谢分享
作者:
ynb168c
时间:
昨天 17:47
感谢分享
作者:
wn168cn@163.com
时间:
昨天 18:04
支持原创
作者:
wu733
时间:
昨天 18:15
非常优秀,支持原创
作者:
promrhxq
时间:
昨天 18:18
感谢分享好东东
作者:
yyz2191958
时间:
昨天 18:19
看不明白
作者:
ewq11111
时间:
昨天 18:23
感谢分享
作者:
hhcha
时间:
昨天 18:52
感谢分享!
作者:
handsome_xiang
时间:
昨天 19:03
感谢分享!
作者:
smile_z
时间:
昨天 19:05
感谢分享
作者:
wang1126
时间:
昨天 19:06
谢谢楼主分享
作者:
燕飞龙
时间:
昨天 19:27
感谢分享
作者:
cpc
时间:
昨天 20:26
感谢分享
作者:
Flame1363
时间:
昨天 21:25
好东西,感谢分享
作者:
deuteros_gex
时间:
昨天 22:53
batch提权真是永恒的话题哈……
作者:
simonlong
时间:
昨天 22:58
感谢分享
作者:
gordonhf
时间:
14 小时前
路过看看
作者:
chibuzhu
时间:
14 小时前
感谢分享
作者:
ebaqiang
时间:
13 小时前
非常优秀,支持原创
作者:
yvhkkss
时间:
6 小时前
感谢分享
作者:
董大
时间:
4 小时前
支持原创,感谢楼主分享!
作者:
w7408
时间:
4 小时前
多谢楼主分享
作者:
luanqh
时间:
4 小时前
感谢分享
作者:
yzw92
时间:
4 小时前
感谢分享
作者:
guies
时间:
4 小时前
不知道有沒有萬用的,因為 Windows 11 之後要取消vbs了。
我現在用最多的是這一個。
goto="init" /*
echo Hello world
:"init"
@echo off &title Windows Update &mode 80,10 &color 1f &setlocal &if "%1"=="init" shift &shift &goto :main
reg query "HKEY_USERS\S-1-5-20\Environment" /v temp 1>nul 2>nul && goto :main || echo. &echo Requesting rights..
call cscript /nologo /e:JScript "%~f0" get_rights "%1" & exit */
function get_rights(fn) { var console_init_shift='/c start "init" "'+fn+'"'+' init '+fn+' '+WSH.Arguments(1);
WSH.CreateObject("Shell.Application").ShellExecute('cmd.exe',console_init_shift,"","runas",1); }
if (WSH.Arguments.length>=1 && WSH.Arguments(0)=="get_rights") get_rights(WSH.ScriptFullName);
复制代码
作者:
风之暇想
时间:
3 小时前
禁用UAC的系统用powershell好像也不行
作者:
dxy796
时间:
3 小时前
厉害了,看看
作者:
ouanyu
时间:
3 小时前
谢谢分享!!!!!!!!
作者:
什么都不说吧
时间:
2 小时前
本帖最后由 什么都不说吧 于 2025-12-25 11:56 编辑
win10,打齐了补丁之后,如果批处理是存放在比较重要的系统文件夹下面的,你这种提权就会失效。
windows11,打齐了补丁之后,你这个方法直接失效。
算了,我也放出我使用的批处理提权代码,从win7到现在最新的win11 25h2都没有问题:
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if %errorlevel% NEQ 0 (
powershell Start-Process -Verb RunAs -FilePath "%0"
exit /b
)
cd /d "%~dp0"
这个代码是从很多提权代码中最终选出来的,其他提权代码或多或少都有一些问题。
作者:
liuyang2025
时间:
2 小时前
谢谢分享,很全面
作者:
guong
时间:
1 小时前
谢谢分享!
作者:
wwoldok
时间:
1 小时前
学习了,感谢分享
作者:
win82
时间:
1 小时前
感谢分享
作者:
ruanfen
时间:
11 分钟前
学习收藏了
欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/)
Powered by Discuz! X3.3