菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
291
0

以管理员权限静默运行当前目录中的 bat 脚本,实现检查启动服务的功能(通过 vbs 脚本)

原创
05/13 14:22
阅读数 64534

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 "cmd.exe", "/c """ & currentDirectory & "\" & batFilePath & """", , "runas", 0

想要绝对路径的自己修改,想不用管理员身份运行的自己搜索吧。。。

2、建立 bat 文件:

@echo off
cd /d %~dp0

:: 判断管理员权限
net.exe 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%秒
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

发表评论

0/200
291 点赞
0 评论
收藏
为你推荐 换一批