通过在第二个getCmdPID.bat文件中使用.vbs隐藏使用管理员权限运行的批处理脚本 [英] Hide running batch script with admin rights by use .vbs in second getCmdPID.bat file

查看:18
本文介绍了通过在第二个getCmdPID.bat文件中使用.vbs隐藏使用管理员权限运行的批处理脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望在admin.bat控制台窗口从ADMINTASKS行执行命令时隐藏它。是否可以在VBSCRIPT中指定ID或以其他方式隐藏控制台?

运行.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

推荐答案

您似乎有两种可能的方案想要结束。

Secario 1.将这两个脚本从视图中隐藏,您将在此处启动run.vbs,它将隐藏这两个脚本:

运行.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 calladmin.bat。

运行.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:
un.vbs"
pause

这篇关于通过在第二个getCmdPID.bat文件中使用.vbs隐藏使用管理员权限运行的批处理脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆