|
|
本帖最后由 hlowld 于 2025-12-25 16:50 编辑
2025.12.25更新一下:
几个版本供按需选择
1、powershell版
reg QUERY "HKU\S-1-5-19" >nul 2>nul || (reg QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA | findstr /i /c:"0x1" >nul 2>nul && (powershell -nop -Command "Start-Process cmd -Verb RunAs -wait -ArgumentList '/c \""""%~f0""" %*\"'" >nul 2>nul & exit)||(echo LUA disabled,elevation aborted & exit))
特点:
1、如果提权成功,提权执行结束后才退出,支持被start /wait方式调用
2、四种情况下(启用UAC普通用户、启用UAC管理员、禁用UAC普通用户、禁用UAC管理员)都不会死循环
3、支持一般参数传递(不支持参数被双引号包裹),如 start /wait "" "新建 批处理.cmd" a1 a2
4、判断UAC是否启用的方法为查询注册表,极端情况下可能不准(如修改了注册表但未重启生效)
2、kkocdko原创的vbs版
fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
特点:
1、创建进程比powershell版快
2、支持一般参数传递(不支持参数被双引号包裹),如 start "" "新建 批处理.cmd" a1 a2
3、尝试提权后立即退出,不适合被start /wait方式调用
4、禁用UAC普通用户 场景会死循环
3、vbs修改版,特点同vbs版,但 禁用UAC普通用户 场景不会死循环
fltmc>nul || (reg QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA | findstr /i /c:"0x1" >nul 2>nul && (mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit)||(echo LUA disabled,elevation aborted & exit))
总而言之,没有完美版
|
|