2023年12月14日发(作者:)
以管理员权限静默运行当前目录中的bat脚本,实现检查启动服
务的功能(通过vbs脚本)
1、建立 vbs 文件:
REM 获取 VBS 文件路径
currentDirectory = Left(FullName, InStrRev(FullName, "") -1)
REM 在下面修改需要运行的 bat 文件名称(需要将此 vbs 和 bat 放置在同一文件夹下)
batFilePath = "run_service_"
REM 以管理员身份并静默执行上面指定的 bat 脚本
CreateObject("ation").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("ation").shellexecute("%~s0","goto :runas","","runas",1)()&goto :eof
:runas
:gogogo
:: 此处修改为需要运行的服务名称
set servicename=SunloginService
:: 此处修改为需要延时执行的秒数
set delaysecond=2
echo 延迟 %delaysecond%秒
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:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp


发布评论