Board logo

标题: [问题求助] vb监控win7服务 [打印本页]

作者: 牛虻    时间: 2015-4-30 13:40     标题: vb监控win7服务

我电脑有一服务不定时停止,所以想用一脚本监控,当监控但服务停止时让它启动,启动后继续监控。后台运行
作者: pcl_test    时间: 2015-4-30 14:06

本帖最后由 pcl_test 于 2015-4-30 16:02 编辑

监控.bat
  1. @echo off
  2. if "%1"=="h" goto begin
  3. start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
  4. :begin
  5. net start|find "服务"||net start 服务
复制代码
任务计划
  1. schtasks /create /sc minute /mo 1 /tn "每隔一分钟检测服务" /tr "C:\监控.bat"
复制代码
监控.vbs
  1. CreateObject("WScript.Shell").Run "cmd /c net start 服务",0
复制代码
任务计划
  1. schtasks /create /sc minute /mo 1 /tn "每隔一分钟检测服务" /tr "C:\监控.vbs"
复制代码

作者: 牛虻    时间: 2015-4-30 14:15

谢谢,我一直在for循环上考虑,居然忘了还有计划任务这个神奇的东西
作者: 牛虻    时间: 2015-4-30 16:17

本帖最后由 牛虻 于 2015-4-30 16:20 编辑

你vbs用的还是 cmd命令
要求:
1、不影响使用,后台运行
2、指定监测时间,如一分钟监测一次
这是我写的bat ,不能后台
  1. @echo off
  2. for /f "skip=3 tokens=4" %%i in ('sc query SNAC') do set "zt=%%i" &goto :next
  3. :next
  4. if /i "%zt%"=="RUNNING" (
  5.     echo 已经发现该服务在运行。
  6. ) else (
  7. echo 该服务现在处理停止状态。
  8.     echo 正在启动SNAC网络准入服务...
  9. net start "SNAC"
  10.     netsh interface set interface name="本地连接" admin=DISABLED
  11. netsh interface set interface name="本地连接" admin=ENABLED
  12. )
  13. pause >nul
复制代码

作者: czjt1234    时间: 2015-5-5 20:20

本帖最后由 czjt1234 于 2015-5-5 22:49 编辑
  1. Dim Shell, fso, TextStream, s
  2. s = "Helpsvc"    '服务名
  3. Set Shell = CreateObject("Shell.Application")
  4. Set fso = CreateObject("Scripting.FileSystemObject")
  5. If Shell.CanStartStopService(s) = False Then
  6.   MsgBox "当前用户没有权限启动和停止指定的服务", 4096
  7.   WScript.Quit()
  8. End If
  9. Do
  10.   If Shell.IsServiceRunning(s) = False Then
  11.     Set TextStream = fso.OpenTextFile("日志.txt", 8, True)
  12.     If Shell.ServiceStart(s, False) = False Then
  13.       TextStream.WriteLine Now() & " 启动服务失败"
  14.     Else
  15.       TextStream.WriteLine Now() & " 启动服务成功"
  16.     End If
  17.     TextStream.Close()
  18.   End If
  19.   WScript.Sleep 1000 * 60   '1分钟
  20. Loop
复制代码

简化版
  1. s = "Helpsvc"    '服务名
  2. Set Shell = CreateObject("Shell.Application")
  3. Do
  4.   If Shell.IsServiceRunning(s) = False Then
  5.     Shell.ServiceStart s, False
  6.   End If
  7.   WScript.Sleep 1000 * 60   '1分钟
  8. Loop
复制代码

作者: gawk    时间: 2015-5-5 21:12

回复 4# 牛虻


    放在任务计划里面执行的时候会有窗口弹出来吗?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2