4

私たちの製品では、現在のユーザーが Windows (具体的には Vista) にログオンしている時間を特定する必要が生じました。これには単純な API 関数がないようで、WMI に関連するものは何も見つかりませんでした (ただし、私は WMI の専門家ではないため、何かを見落としている可能性があります)。

何か案は?

4

5 に答える 5

4

(私のように) 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

于 2008-08-17T12:24:51.310 に答える
1

WMI では、「select * from Win32_Session」を実行すると、「StartTime」の値が得られます。

それが役立つことを願っています。

于 2008-08-17T10:33:36.400 に答える
0

WMI を使用する場合、Win32Session は素晴らしいスタートです。同様に、ネットワーク上にいる場合は、Win32_NetworkLoginProfile を使用してあらゆる種類の情報を取得できることを指摘しておく必要があります。

Set logins = objWMIService.ExecQuery _
   ("select * from Win32_NetworkLoginProfile")
For Each objSession in logins
   Wscript.Echo objSession.LastLogon
Next

収集できるその他の情報には、ユーザー名、最後のログオフ、およびさまざまなプロファイル関連のものがあります。

于 2009-02-12T21:25:49.810 に答える