我正在寻找一种可靠的方法来提取给定机器上每个用户configuration文件的最后logindate/时间。
有任何想法吗? 阅读下面,看看我目前的方法。
在Windows XP中,我已经在registry中查找并从HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ key中提取ProfileLoadTimeHigh和ProfileLoadTimeLow值。
这些值名称存在于Vista,Windows 7和2008中,但其值始终为0。
在这些系统上,我有一种提取数据的方式,但我知道这不是100%准确的。 在这些操作系统上,我转到每个注册的configuration文件目录,并从ntuser.pol文件中提取lastwritetime值。 这是相当准确的,但在XP中(我可以使用上面提到的方法)我看到ntuser.pol文件上次写入时间与registry中显示的login时间之间的3 – 4分钟差异。
WMI中的Win32_NetworkLoginProfile类具有相同的限制。 XP系统将最后一次login存储在LastLogon属性中,但对于以后的操作系统,此属性为空。
所以你有它。 位于Vista / 7/2008的XP数据在哪里?
Win32_NetworkLoginProfile的LastLogon属性应该有它。 在我正在看的Win7机器上,我打开了wbemtest并跑了:
SELECT Name,LastLogon FROM Win32_NetworkLoginProfile
LastLogon的<null>值返回的唯一条目是NT AUTHORITY \ SYSTEM等内置帐户。 列表中的所有其他帐户(包括域帐户和本地帐户)都具有有效的LastLogon值。
我不确定什么会导致您的系统行为有所不同。