Option Explicit
Dim objSpooler
Dim objEventSource
Dim strWQLQuery
Dim objNextEvent
Dim strComputer = "."
Dim objWMIService
strWQLQuery = "SELECT * FROM _InstanceModificationEvent WITHIN 5" & _
"WHERE TargetInstance ISA 'Win32_Service' AND " & _
"TargetInstance.Name= 'Spooler' AND targetInstance.State = 'Stopped'"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel = impersonate}!\\" & _
strComputer & "\root\cimv2")
Set objSpooler=objWMIService.Get("Win32_Service ="'Spooler'"")
If objSpooler.State = "Running" Then
Set objEventSource = GetObject("winmgmts:{impersonationLevel = impersonate}"). _
ExecNotificationQuery(strWQLQuery)
WScript.Echo "Waiting for the Event ..."
Set objNextEvent = objEventSource.NextEvent
WScript.Echo "The Event took place"
WScript.Echo objNextEvent.TargetInstance.DisplayName & " is " & _
objNextEvent.TargetInstance.State
WScript.Echo "Synchronous Processing Continues"
WScript.Echo "If ..." & vbCrLf & _
"then you are using asynchronous processing"
WScript.Echo "If ..." & vbCrLf & _
"then you are using asynchronous processing"
Else
WScript.Echo "The Spooler Service is not running"
End If
MsgBox "Click on OK to Finish"
上面是我的代码,得出800A0401错误,如果按照书上的写法出现800A03EE错误。
附上书中源码:
Option Explicit
Dim objSpooler
Dim objEventSource
Dim strWQLQuery
Dim objNextEvent
strWQLQuery = "SELECT * FROM _InstanceModificationEvent WITHIN 5" & _
"WHERE TargetInstance ISA 'Win32_Service' AND " & _
"TargetInstance.Name= 'Spooler' AND targetInstance.State = 'Stopped'"
Set objSpooler = GetObject("winmgmts:{impersonationLevel = impersonate}!" & _
"Win32_Service ="'Spooler'"")
If objSpooler.State = "Running" Then
Set objEventSource = GetObject("winmgmts:{impersonationLevel = impersonate}"). _
ExecNotificationQuery(strWQLQuery)
WScript.Echo "Waiting for the Event ..."
Set objNextEvent = objEventSource.NextEvent
WScript.Echo " The Event took place"
WScript.Echo objNextEvent.TargetInstance.DisplayName & " is " & _
objNextEvent.TargetInstance.State
WScript.Echo "Synchronous Processing Continues"
WScript.Echo "If ..." & vbCrLf & _
"then you are using asynchronous processing"
WScript.Echo "If ..." & vbCrLf & _
"then you are using asynchronous processing"
Else
WScript.Echo "The Spooler Service is not running"
End If
MsgBox "Click on OK to Finish"
另我查找了一份代码,没想到可以执行,结果是否正确我没看,警告没跳出来。附上源码:
Const HIDDEN_WINDOW = 12
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)
有哪位高手给我看看,感谢。如果有可能请发信息。
邮箱:
seechina@hotmail.com hbmr00@sina.comQQ:297496445
电脑环境:
OS 名称 Microsoft Windows 2000 Professional
版本 5.0.2195 Service Pack 4 内部版本号 2195
没有安装WMI SDK
另有windows 2000 server family系统,同样没有通过。