以管理员权限静默运行当前目录中的 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 "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

posted @   不是豆豆  阅读(2113)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
友情链接:迷途


点击右上角即可分享
微信分享提示