ユーザーが Windows にログオンしている時間を確認する

StackOverflow https://stackoverflow.com/questions/13578

  •  08-06-2019
  •  | 
  •  

質問

私たちの製品では、現在のユーザーが 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

他のヒント

Powershell と WMI では、次の 1 行コマンドは、ユーザーとそのログオン時間を示すオブジェクトのリストを返します。

Get-WmiObject win32_networkloginprofile | ? {$_.lastlogon -ne $null} | % {[PSCustomObject]@{User=$_.caption; LastLogon=[Management.ManagementDateTimeConverter]::ToDateTime($_.lastlogon)}}

説明:

  • WMIからログインユーザーのリストを取得します。
  • 非対話型ユーザーをフィルターで除外します (効果的に削除します) NT AUTHORITY\SYSTEM)
  • ユーザーとログオン時間を読みやすく再フォーマットします

参考文献:

WMI では次のようにします。"from win32_session" select * select "select" starttime "valueになります。

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

WMI を使用する場合、Win32Session は優れたスタート地点となります。同様に、ネットワーク上にある場合は、Win32_NetworkLoginProfile を使用してあらゆる種類の情報を取得できることにも注意してください。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top