本帖最后由 2198114498 于 2024-12-31 12:42 编辑
感谢4楼flashercs完美解决
经过测试,A中start必须提供完整路径或者B中使用%~s0才行。
也是因为一知半解,也是抄作业没抄明白,曾经用下面第一种提权,后来想添加参数换用REG QUERY "HKU\S-1-5-19">NUL 2>&1判断,
已经想不起当时在哪抄的有没有%~s0,可能改的过程没注意改没了,现在重新搜到第二种,才注意到都有%~s0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
以下是原问题:
找到的提权代码都是无参的
请教各位大神,
1、如何支持任意数量参数,特别是参数带双引号的
2、从A批处理start运行B批处理,如果参数包含双引号,则B批处理提权后闪退
谢谢!
下面是我自己写的测试代码,B可以实现自运行或者拖放运行,
但是A调用B,到了提权代码就会退出,请问该怎么修改,先谢了!
B.bat- @echo on&setlocal enabledelayedexpansion
- cd /d %~dp0
- echo 0=%0
- echo *=%*
- echo 1=%1
- echo 2=%2
- echo 3=%3
- echo 4=%4
- echo 5=%5
- echo 6=%6
- echo 7=%7
- echo 8=%8
- echo 9=%9
- pause
- if not "%~2"=="" set args=%*&goto :@a
- set args=%* "abc" "1 23" 4 5
-
- :@a
- set args=%args:"=""%
- REG QUERY "HKU\S-1-5-19">NUL 2>&1||mshta vbscript:createobject("shell.application").shellexecute("cmd.exe","/c """"%~0"" %args%""",,"runas",1)(window.close)&&pause&&goto :eof
- mshta vbscript:Execute("msgbox(""文件不存在: ""):close")
- pause&goto :eof
复制代码 A.bat- cd /d %~dp0
- set args=1 2 3 4 5 "6 a" "b 7"
- start "B" cmd /c ""B.bat" %args%"
复制代码
|