[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[安全相关] Bat权限控制运行支持三种运行方式

本帖最后由 /zhqsystem/zhq 于 2024-11-27 16:51 编辑

转载请注明批处理之家
说明:
0=只运行普通权限
1=只运行管理员权限
其他值或不填=同时运行
系统要求NT6+,开启UAC有效,关闭UAC不需要这个

  1. call:UserAccountControlPermissionsApply 参数控制
  2. goto:主标签或调用
  3. goto:eof
  4. :UserAccountControlPermissionsApply
  5. rem:用户账户控制申请运行
  6. cd/d "%~dp0"
  7. if /i "%~1"=="0" echo,非管理员权限运行,包含管理员权限自动退出 字体:淡绿色&Color 0A
  8. if /i "%~1"=="1" echo,保留管理员权限批处理运行,包含非管理员权限自动退出 字体:淡浅绿色&Color 0B
  9. if /i not "%~1"=="0" if /i not "%~1"=="1" echo,保留管理员权限和非管理员权限同时运行.如果直接管理员运行无法调用普通权限自行创建计划任务 字体:黄色&&Color 0E
  10. if /i "%~1"=="0" Reg.exe Query "HKU\S-1-5-20" >nul 2>nul&&exit
  11. if /i not "%~1"=="0" if /i not "%~1"=="1" Reg.exe Query "HKU\S-1-5-20" >nul 2>nul&&goto:eof
  12. if /i "%~1"=="1" Reg.exe Query "HKU\S-1-5-20" >nul 2>nul||"%systemroot%\system32\mshta.exe" vbscript:createobject("shell.application").shellexecute("""%cd%\%~nx0""",":UserAccountControlRequest",,"runas",1)(window.close)&&exit
  13. if /i not "%~1"=="0" if /i not "%~1"=="1" Reg.exe Query "HKU\S-1-5-20" >nul 2>nul||"%systemroot%\system32\mshta.exe" vbscript:createobject("shell.application").shellexecute("""%cd%\%~nx0""",":UserAccountControlRequest",,"runas",1)(window.close)&&goto:eof
  14. goto:eof
复制代码


追加带有括号路径及其括号名称批处理代码管理员权限调用方法:2019/03/30 Update
  1. @Echo Off&Color 0e
  2. SetLocal EnableDelayedExpansion
  3. Reg.exe Query "HKU\S-1-5-20" >nul 2>nul||(
  4. >"%Temp%\TEMP.Bat" (
  5.   Echo,@Echo Off^&Color 0e
  6.   Echo,Reg.exe Query "HKU\S-1-5-20" ^>nul 2^>nul^|^|"%systemroot%\system32\mshta.exe" vbscript:createobject^("shell.application"^).shellexecute^("""%Temp%\Temp.Bat""","1",,"runas",1^)^(window.close^)^&^&exit
  7.   Echo,Call "%~f0"
  8. )
  9. )
  10. Reg.exe Query "HKU\S-1-5-20" >nul 2>nul||start "" "%Temp%\TEMP.Bat"
  11. Reg.exe Query "HKU\S-1-5-20" >nul 2>nul||exit
  12. Reg.exe Query "HKU\S-1-5-20" >nul 2>nul&&echo,管理员主命令
  13. pause
  14. 结尾处需要删除临时Bat
  15. goto:eof
复制代码
20241127Update
更新说明:更新虚拟磁盘和无临时文件方式调用[可以同时存在][仅仅是优化,有些数据均来自各大论坛]
  1. @Echo Off&Color 0e&SetLocal EnableDelayedExpansion&cd/d "%~dp0"
  2. set "[title][Name]=这里是批处理的名字自行更改,注:不包含扩展名
  3. for /f "delims=" %%i in ('"%SystemRoot%\System32\Subst.exe"')do for /f "tokens=1,* delims=\" %%d in ("%%i")do for /f "tokens=1,* delims==<> " %%e in ("%%e")do if /i "%~d0"=="%%d" cd/d "%%~ff%~p0"
  4. if /i "%cd%\"=="%~dp0" (echo,非虚拟磁盘:%cd%)else (echo,虚拟磁盘已切换至:%cd%)
  5. >nul Reg.exe Query "HKU\S-1-5-20"||"%systemroot%\System32\Mshta.exe" VbsCript:Createobject("Shell.Application").ShellExeCute("""%~f0""","%[Title][Name]%",,"Runas",1)(Window.Close)&&Exit
  6. if /i not "%~f0"=="%~dp0%[title][Name]%%~x0" ren "%~f0" "%[title][Name]%%~x0"
  7. Reg.exe Query "HKU\S-1-5-20" >nul 2>nul&&echo,True&&title %[title][Name]% 这里换行call:这里调用后边的任何标签   这里换行论坛有问题不显示换行  goto:eof
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

好深奥,看不懂啊

TOP

返回列表