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