我们有一个基于 MSAccess 的解决方案,该解决方案在客户计算机上运行,并通过 VBScript 脚本启动。由于这里的网络环境,我们知道在大多数情况下,应用程序无法在计算机处于待机状态时存活下来。这意味着在恢复计算机时,数据库连接会丢失并且无法恢复。
在我们找到一种方法来修复恢复时的数据库连接之前,我想在计算机进入待机状态时终止该进程,以避免用户在下次想要访问数据库时尝试继续使用失败的应用程序时产生混淆。
目前,我等待这样的 Win32_PowerManagementEvent:
Set wmiPowerManagementEvent = GetObject("winmgmts:").ExecNotificationQuery("Select * from Win32_PowerManagementEvent")
Do
on error resume next
evt = wmiPowerManagementEvent.NextEvent(5000).EventType
on error goto 0
If evt = cntEventEnteringSuspend Then
WshShell.Run "taskkill /FI ""WINDOWTITLE eq SWEPiT*"" /FI ""IMAGENAME eq MSACCESS.EXE"" /F", 0, true
WScript.Quit
End If
Loop
由于某种原因,这将不再像在 WindowsXP 上那样捕获所有事件,因此我假设 Win7 中的行为有所改变。那么,我做错了什么或:
我怎样才能在 Windows 7 上可靠地做到这一点?