私たちの製品では、現在のユーザーが Windows (具体的には Vista) にログオンしている時間を特定する必要が生じました。これには単純な API 関数がないようで、WMI に関連するものは何も見つかりませんでした (ただし、私は WMI の専門家ではないため、何かを見落としている可能性があります)。
何か案は?
私たちの製品では、現在のユーザーが Windows (具体的には Vista) にログオンしている時間を特定する必要が生じました。これには単純な API 関数がないようで、WMI に関連するものは何も見つかりませんでした (ただし、私は WMI の専門家ではないため、何かを見落としている可能性があります)。
何か案は?
(私のように) WMI に慣れていない人のために、以下にいくつかのリンクを示します。
VBS から Win32_Session をクエリする例を次に示します。
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set sessions = objWMIService.ExecQuery _
("select * from Win32_Session")
For Each objSession in sessions
Wscript.Echo objSession.StartTime
Next
私のパーソナル コンピューターの 6 つのセッションを警告します。おそらく、LogonType でフィルター処理して、実際の ("対話型") ユーザーのみを一覧表示できます。「現在のユーザー」のセッションを選択する方法がわかりませんでした。
[編集] そして、ここにあなたの問題に対する Google からの結果があります: http://forum.sysinternals.com/forum_posts.asp?TID=3755
WMI では、「select * from Win32_Session」を実行すると、「StartTime」の値が得られます。
それが役立つことを願っています。
WMI を使用する場合、Win32Session は素晴らしいスタートです。同様に、ネットワーク上にいる場合は、Win32_NetworkLoginProfile を使用してあらゆる種類の情報を取得できることを指摘しておく必要があります。
Set logins = objWMIService.ExecQuery _
("select * from Win32_NetworkLoginProfile")
For Each objSession in logins
Wscript.Echo objSession.LastLogon
Next
収集できるその他の情報には、ユーザー名、最後のログオフ、およびさまざまなプロファイル関連のものがあります。