|
|
一楼代码 powershell start '%~f0' ' %*' -verb runas 对命令行参数的限制是其中单个参数不能包含空格或不能用双引号包裹,powershell start ... 会自动过滤一层命令行参数中的双引号。
可用以下示例代码解决这个问题,其结果还允许那些用双引号包裹的命令行参数内含 &^<|> 等特殊字符。
- @echo off & fltmc>nul 2>nul || (
- set argv=%*
- setlocal enabledelayedexpansion
- set argv=/c \"\"%~f0\" !argv:"=\"!\"
- powershell -c "start cmd.exe -arg '!argv!' -verb runas" &exit/b )
- :: 以下是须在提权状态下被执行的批处脚本原代码(例如仅是屏显源批处脚本文件的全部命令行参数)
- echo,%*
- pause&exit/b
复制代码 如果还要 提权+隐藏 源批处脚本文件,可用以下示例代码
- @echo off & fltmc>nul 2>nul || (
- set argv=%*
- setlocal enabledelayedexpansion
- set argv=/c \"\"%~f0\" !argv:"=\"!\"
- powershell -c "start cmd.exe -arg '!argv!' -verb runas -win hidden" &exit/b )
- :: 以下是须在提权状态下被执行的批处脚本原代码(例如仅是复写源批处脚本文件的全部命令行参数到 test.txt)
- >"%~dp0test.txt" echo,%*
- exit/b
复制代码
|
|