在第二个 getCmdPID.bat 文件中使用 .vbs 隐藏 运行 具有管理员权限的批处理脚本
Hide running batch script with admin rights by use .vbs in second getCmdPID.bat file
我想在 admin.bat 控制台 window 从 ADMINTASKS 行执行命令时隐藏它。是否可以在 vbscript 中提供 pid 或以其他方式隐藏控制台?
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c admin.bat"
oShell.Run strArgs, 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
start admin.bat
pause
您似乎有 2 种可能的情况要结束。
Secario 1. 从视图中隐藏两个脚本,在这里您将启动 run.vbs
,这将隐藏两个脚本:
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
oShell.Run "D:\getCmdPID.bat", 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
start admin.bat
pause
或者,场景 2,您希望用户看到 getCmDPID.bat
文件,但隐藏 admin.bat
但在这里,您将在隐藏中启动 getCmdPID.bat file, which will call run.vbs and in turn will call
admin.bat模式。
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
oShell.Run "D:\admin.bat", 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
"D:\run.vbs"
pause
我想在 admin.bat 控制台 window 从 ADMINTASKS 行执行命令时隐藏它。是否可以在 vbscript 中提供 pid 或以其他方式隐藏控制台?
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c admin.bat"
oShell.Run strArgs, 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
start admin.bat
pause
您似乎有 2 种可能的情况要结束。
Secario 1. 从视图中隐藏两个脚本,在这里您将启动 run.vbs
,这将隐藏两个脚本:
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
oShell.Run "D:\getCmdPID.bat", 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
start admin.bat
pause
或者,场景 2,您希望用户看到 getCmDPID.bat
文件,但隐藏 admin.bat
但在这里,您将在隐藏中启动 getCmdPID.bat file, which will call run.vbs and in turn will call
admin.bat模式。
run.vbs
Set oShell = CreateObject ("Wscript.Shell")
oShell.Run "D:\admin.bat", 0, false
admin.bat
@echo off
title=mycmd
echo test
NET SESSION
IF %ERRORLEVEL% NEQ 0 GOTO ELEVATE
GOTO ADMINTASKS
:ELEVATE
CD /d %~dp0
MSHTA "javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('%~nx0', '', '', 'runas', 1);close();"
EXIT
:ADMINTASKS
::(Do whatever you need to do here)
pause
EXIT
getCmdPID.bat
@echo off
for /f "tokens=2 delims=," %%a in (
'tasklist /v /fo csv ^| findstr /i "mycmd"'
) do (
set "mypid=%%~a"
)
echo %mypid%
::here should be modifications
"D:\run.vbs"
pause