web-dev-qa-db-ja.com

Windowsでのユーザープロファイルのログオン日時の決定

特定のマシンの各ユーザープロファイルの最終ログオン日時を抽出するための信頼できる方法を探しています。

何か案は?私の現在の方法を確認するには、以下をお読みください。

Windowsの場合XPすでにレジストリを調べて、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList \キーからProfileLoadTimeHigh値とProfileLoadTimeLow値を抽出します。

これらの値の名前はVista、Windows 7、および2008に存在しますが、値は常に0です。

これらのシステムでは、データを抽出するための厄介な方法がありますが、100%正確ではないことはわかっています。これらのオペレーティングシステムでは、登録されている各プロファイルディレクトリに移動し、ntuser.polファイルからlastwritetime値を取得します。これはかなり正確ですが、XP(上記の方法を使用できます)では、ntuser.polファイルが最後に書き込まれた時間とログオン時間の間に約3〜4分の違いがあります。レジストリに表示されます。

WMIのWin32_NetworkLoginProfileクラスにも同じ制限があります。 XPシステムは最後のログオンをLastLogonプロパティに保存しますが、それ以降のOSではこのプロパティは空です。

だからあなたはそれを持っています。 XP Vista/7/2008にある)に提供されるデータはどこにありますか?

3
Shane Corellian

Win32_NetworkLoginProfileのLastLogonプロパティshould持っている必要があります。私が今見ているWin7マシンで、私はwbemtestを開いて実行しました:

SELECT Name,LastLogon FROM Win32_NetworkLoginProfile

LastLogonの<null>値で戻ってきたエントリは、NT AUTHORITY\SYSTEMのような組み込みアカウントだけでした。リスト内の他のすべてのアカウント(ドメインアカウントとローカルアカウントの両方を含む)には、LastLogonの有効な値がありました。

システムの動作が異なる原因が何であるかわかりません。

3
Ryan Bolger