以管理員權限靜默運行當前目錄中的 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM