找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: hlowld

[分享] 自动提权执行批处理模板自用版

[复制链接]
发表于 2026-8-18 00:46:01 | 显示全部楼层
感谢分享。
回复

使用道具 举报

发表于 2026-8-18 00:58:12 | 显示全部楼层
感谢大佬整理分享
回复

使用道具 举报

发表于 2026-8-28 17:24:32 | 显示全部楼层
在你提供的代码基础上精简了一下,部分代码实现感觉更合理一点:

  1. @ECHO OFF
  2. PUSHD "%~DP0" & SETLOCAL ENABLEDELAYEDEXPANSION
  3. SET "Run_flag=%WinDir%\Temp\UAC_TEMP_FLAG"

  4. REM 提权限后是否隐藏运行窗口,0默认不隐藏,1隐藏
  5. SET "hidden=0"

  6. IF /I "%username%" EQU "system" GOTO :runas
  7. REG QUERY "HKU\S-1-5-19" >NUL 2>NUL && GOTO :runas

  8. REM 关闭UAC或普通账户执行时,由于无法获取管理员权限会导致无限弹窗,此处代码确保第二次调用时能正常退出
  9. DIR /B "%Run_flag%" && (RMDIR /S /Q "%Run_flag%" & ENDLOCAL & ECHO 无法提升到管理员权限! & SET /P "=请按任意键退出..." <NUL & PAUSE >NUL & EXIT /B) || MKDIR "%Run_flag%"

  10. POWERSHELL.EXE /? >NUL 2>NUL && SET "psh=1" || SET "psh=0"

  11. SET "argv=%*"
  12. IF DEFINED argv (
  13.     IF "%psh%"=="1" SET "argv=%argv:"="""%"
  14.     IF "%psh%"=="0" SET "argv=%argv:"=""%"
  15. )

  16. SET vshow=1
  17. IF %hidden% EQU 1 (SET "winstyle=-WindowStyle Hidden" & SET vshow=0)

  18. IF "%psh%"=="1" (POWERSHELL -nop -Command "Start-Process cmd.exe -Verb RunAs %winstyle% -ArgumentList '/c \""""%~f0""" %argv%\"'" >NUL 2>NUL & EXIT /B)

  19. IF "%psh%"=="0" (
  20.     ECHO CreateObject^("Shell.Application"^).ShellExecute "cmd.exe", "/c """"%~f0"" %argv%""", "", "runas", %vshow% > "%temp%\Admin.vbs"
  21.     CSCRIPT.EXE //Nologo "%temp%\Admin.vbs" >NUL 2>NUL & DEL /F /Q "%temp%\Admin.vbs" >NUL 2>NUL & EXIT /B
  22. )

  23. :runas
  24. :: ON THE Privilege Var UAC ::
  25. ECHO 传递参数:%*


  26. PAUSE & EXIT /B
复制代码


回复

使用道具 举报

发表于 2026-8-29 09:02:56 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-8-29 17:12:24 | 显示全部楼层
本帖最后由 redyear2026 于 2026-8-29 17:17 编辑

   查 winPE 系统并没有 cmd 提权说法,故仅需针对完整系统就可以了
   win7 系统开始标配 powershell 组件,故仅用 powershell 代码实现 cmd 提权即可,且代码更轻量化
   据此给一个简化的版本如下,其中改用系统兼容性和效率据说更好的 fltmc 完成检测提权状态,调整了开启延迟变量的顺序,以便兼容命令行参数中可能包含的 ! 字符,以下版本兼容命令行参数有无两种实况,且命令行参数可包含用双引号包裹的空格和 ^&(<|>) 等特殊字符...

test.bat
  1. @echo off &set "w=" &set argv=%*
  2.    REM 若被提权窗口须隐藏,请删除本行 set 之前的所有字符 set "w=-win hidden"
  3. fltmc>nul 2>nul || (
  4.    setlocal enabledelayedexpansion
  5.    if "%~1" neq "" set argv=!argv:"=\"!
  6.    powershell -c "start cmd.exe %w% -arg ' /c \"\"%~f0\" !argv!\" ' -verb runas" >nul 2>nul &exit/b )
  7. REM 从以下行载入须提权运行的原脚本代码(示例如下两行)
  8.   echo,%*
  9.   pause
  10. REM 原脚本代码结束
  11. exit/b
复制代码
回复

使用道具 举报

发表于 2026-9-2 14:43:43 | 显示全部楼层
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-9-12 07:31

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表