|
Option Explicit
Const VMwareService1 = "VMAuthdService"
Const VMwareService2 = "VMnetDHCP"
Const VMwareService3 = "VMwareHostd"
Const VMwareService4 = "VMware NAT Service"
Const VMwareService5 = "VMUSBArbService"
Const VMwareProcess = "vmware.exe"
Dim WSHShell, objWMIService, process, servicesStarted
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
servicesStarted = False
StartVMwareServices
WSHShell.Run """D:\Program Files\VMware Workstation\vmware.exe""", 1, False
WaitForProcessExit
If servicesStarted Then
StopVMwareServices
End If
'WScript.Echo "VMware进程已退出,相关服务已停止"
WScript.Quit 0
Sub StartVMwareServices()
Dim service, serviceName
On Error Resume Next
Dim serviceList
serviceList = Array(VMwareService1, VMwareService2, VMwareService3, VMwareService4,VMwareService5)
For Each serviceName In serviceList
Set service = objWMIService.Get("Win32_Service.Name='" & serviceName & "'")
If Err.Number = 0 Then
If service.State <> "Running" Then
'WScript.Echo "正在启动服务: " & serviceName
Dim result
result = service.StartService()
If result = 0 Then
servicesStarted = True
'WScript.Echo serviceName & " 服务已启动"
Else
'WScript.Echo "无法启动服务: " & serviceName & ", 错误码: " & result
End If
Else
'WScript.Echo serviceName & " 服务已在运行"
End If
Else
'WScript.Echo "未找到服务: " & serviceName
End If
Err.Clear
Next
On Error GoTo 0
End Sub
Sub StopVMwareServices()
Dim service, serviceName
On Error Resume Next
Dim serviceList
serviceList = Array(VMwareService1, VMwareService2, VMwareService3, VMwareService4,VMwareService5)
For Each serviceName In serviceList
Set service = objWMIService.Get("Win32_Service.Name='" & serviceName & "'")
If Err.Number = 0 Then
If service.State = "Running" Then
'WScript.Echo "正在停止服务: " & serviceName
Dim result
result = service.StopService()
If result = 0 Then
'WScript.Echo serviceName & " 服务已停止"
Else
'WScript.Echo "无法停止服务: " & serviceName & ", 错误码: " & result
End If
Else
'WScript.Echo serviceName & " 服务未运行"
End If
Else
'WScript.Echo "未找到服务: " & serviceName
End If
Err.Clear
Next
On Error GoTo 0
End Sub
Sub WaitForProcessExit()
Dim processes
'WScript.Echo "等待VMware进程退出..."
Do
WScript.Sleep 5000 ' 每5秒检查一次
Set processes = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & VMwareProcess & "'")
Loop While processes.Count > 0
'WScript.Echo "VMware进程已退出"
End Sub
启动vmware.zip
(1.02 KB, 下载次数: 48)
运行vmware前打开vmware服务,关闭之后,随即关闭其服务。
|
|