と の組み合わせを試すことができWin32_Process
ますWin32_LogonSession
。
computer = "..."
Set wmi = GetObject("winmgmts://" & computer & "/root/cimv2")
logonScreenCount = wmi.ExecQuery _
("SELECT * FROM Win32_Process WHERE Name = 'LogonUI.exe'").Count
interactiveUserCount = wmi.ExecQuery _
("SELECT * FROM Win32_LogonSession WHERE LogonType = 2").Count
If logonScreenCount = 1 And interactiveUserCount = 0 Then
WScript.Echo "Logon screen is being displayed"
End If
Win32_Process
ログオン画面プロセスが実行されているかどうかを確認するクエリと、Win32_LogonSession
ユーザーが対話的にログインしているかどうかを確認するクエリです。考えられる組み合わせは次のとおりです。
logonScreenCount = 0、interactiveUserCount = 0:
システムの起動が完了していない可能性があります (ログオン画面も対話型ログオンもありません)。
logonScreenCount = 1、interactiveUserCount = 0:
システムは起動しており、ログオン画面は表示されていますが、ユーザーがログインしていません。
logonScreenCount = 0、interactiveUserCount = 1:
システムは起動しており、ユーザーはコンソールにログインしています。
クエリを繰り返しても変更は反映されないことに注意してください。GetObject()
WMI オブジェクトを更新するには、再度実行する必要があります。
また、上記のコード スニペットは、システムの起動中にリモート ホスト上の RPC サーバーが使用できないなどのエラーを処理しないことに注意してください。