以管理员权限静默运⾏当前⽬录中的bat脚本,实现检查启动服
务的功能(通过vbs脚本)
1、建⽴ vbs ⽂件:
REM 获取 VBS ⽂件路径
currentDirectory = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\") -1)
REM 在下⾯修改需要运⾏的 bat ⽂件名称(需要将此 vbs 和 bat 放置在同⼀⽂件夹下)
batFilePath = "run_service_later.bat"
REM 以管理员⾝份并静默执⾏上⾯指定的 bat 脚本
CreateObject("Shell.Application").ShellExecute "", "/c """ & currentDirectory & "\" & batFilePath & """", , "runas", 0
想要绝对路径的⾃⼰修改,想不⽤管理员⾝份运⾏的⾃⼰搜索吧。。。
2、建⽴ bat ⽂件:
@echo off
cd /d %~dp0
:: 判断管理员权限
< session 1>NUL 2>NUL && (
goto as_admin
) || (
goto not_admin
)
:as_admin
echo已经是管理员⾝份,不再申请
goto gogogo
:
not_admin
echo⾮管理员⾝份,申请权限
@ECHO OFF&PUSHD %~DP0
%1%2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :runas","","runas",1)(window.close)&goto:eof
:runas
:gogogo
:: 此处修改为需要运⾏的服务名称
set servicename=SunloginService
:: 此处修改为需要延时执⾏的秒数
set delaysecond=2
echo延迟 %delaysecond%秒vbs脚本怎么停止
ping 127.0.0.1 -n %delaysecond% > nul
echo检查服务状态...
for /f "skip=3 tokens=4" %%i in ('sc query %servicename%') do set "zt=%%i" &goto:next
:next
if /i "%zt%"=="RUNNING" (goto running)
if /i "%zt%"=="STOPPED" (goto 2)
:1
echo %servicename% 服务在运⾏,将停⽌服务
echo 'net stop %servicename%'
echo made by doudou
ping 127.0.0.1 -n 5 >nul
exit
:2
echo %servicename% 服务未运⾏,将启动服务
net start %servicename%
echo made by doudou
ping 127.0.0.1 -n 5 >nul
exit
:running
echo服务在运⾏,程序结束
ping 127.0.0.1 -n 5 >nul
exit
pause>null
如果不需要静默运⾏,该 bat 可以独⽴运⾏。需要改什么功能的⾃⼰看着来吧。。。
3、如需⾃启,请在下⾯路径中建⽴ vbs 或 bat 的快捷⽅式(Windows 10):C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。