找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1052|回复: 3

[系统相关] 求助win11提权隐藏窗口,不用mshta命令的

[复制链接]
发表于 2026-3-17 14:23:08 来自手机 | 显示全部楼层 |阅读模式
求助win11提权隐藏窗口,不用mshta命令的
发表于 2026-3-17 16:56:48 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-17 19:03 编辑



参考 https://bbs.bathome.net/thread-75761-1-1.htmlhttps://bbs.bathome.net/thread-75783-1-1.html 4楼+
 楼主| 发表于 2026-3-19 03:24:14 来自手机 | 显示全部楼层
这个方法测试有效
if "%~1"=="runas" ( goto :main )
echo Set objShell = CreateObject("Shell.Application") > "%temp%\UAC.vbs"
echo objShell.ShellExecute "%~f0", "runas", "", "runas", 0 >> "%temp%\UAC.vbs"
"%temp%\UAC.vbs"
del "%temp%\UAC.vbs"
exit /b
:main
发表于 2026-3-19 11:40:59 | 显示全部楼层
本帖最后由 aloha20200628 于 2026-3-30 18:29 编辑

   有关 '批处脚本自行完成提权(即不用右键管理员启运或不在管理员窗口中启运)' 的问题不断被问,以下用三个示例代码分享其中几个要点,因实测 win11 24h2 版本已彻底移除了 mshta 内嵌式代码运行权限(但运行 *.hta 脚本文件或 bat+mshta 混编脚本文件依然被支持),以下示例只用 powershell 方法以免创建 *.vbs / *.js 临时文件或构造混编版式的批处脚本。
   一。在批处脚本中自行申请提权并隐藏其提权窗口通常有两个方法,一是通过 vbs/jscript/mshta 调用 shellExecute 方法,二是通过 powershell 调用 start 方法,二者皆可管控提权窗口状态(如隐藏与否等)。前者若采用 mshta 可避免创建 *.vbs, *.js 临时文件或混编版式(bat+vbs,bat+jscript)而直接在批处脚本中实现;如果不用 mshta 可采用 powershell 方法直接在批处脚本中实现。win8-11 系统均标配 powershell,故采用 powershell 方法提权批处脚本更为简捷,winXP/win7/winPE 未预装 powershell 的场合,通常采用 mshta 代码较为简洁,只不过会导致闪屏而已。
   二。被提权的批处脚本若没有命令行参数或其命令行参数不包含双引号(即单个参数不内含空格),其句式比较简洁,如以下 a, b 版示例代码;若脚本路径和命令行参数均包含双引号,则句式略为复杂,如以下 c 版代码。
   三。判断当前是否为提权状态的方法很多,dostips.com, stackoverflow.com 论坛曾推荐采用系统内置的 fltmc 命令,因其通行 xp,7-11 及 pe 各个系统,反应速度快其不必联网。
   四。系统在 '用户帐户控制' 未设置为 '从不通知' 状态时,脚本申请提权或开启cmd管理员窗口之前会弹窗等候确认,要取消此步骤,须先手动设置完毕方可。

a 版 》脚本路径可含空格,没有命令行参数 // 备注:提权代码仅创建一个空文件 x.0
  1. @echo off &fltmc>nul 2>nul || (powershell -c "start '%~f0' -verb runas -win h" &exit/b)
  2. :: 以下是须在提权状态下被执行的批处脚本原代码
  3. cd.>"%~dp0x.0"<nul &exit/b
复制代码


b 版 》脚本路径可含空格,有命令行参数但其中不能包含双引号  // 备注:提权代码仅创建一个覆写原始命令行参数的文件 x.1
  1. @echo off &fltmc>nul 2>nul || (powershell -c "start '%~f0' -arg '%*' -verb runas -win h" &exit/b)
  2. :: 以下是须在提权状态下被执行的批处脚本原代码
  3. >"%~dp0x.1" echo,%*
  4. exit/b
复制代码


c 版 》脚本路径可含空格,有命令行参数且其中可包含双引号 // 备注:提权代码仅创建一个覆写原始命令行参数的文件 x.2
  1. @echo off &fltmc>nul 2>nul || (
  2.    set argv=%*
  3.    setlocal enabledelayedexpansion
  4.    set argv=/c \"\"%~f0\" !argv:"=\"!\"
  5.    powershell -c "start cmd.exe -arg '!argv!' -verb runas -win h" &exit/b)
  6. :: 以下是须在提权状态下被执行的批处脚本原代码
  7. >"%~dp0x.2" echo,%*
  8. exit/b
复制代码

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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-4-21 17:05

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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