确定 Windows 上用户配置文件的登录日期/时间

确定 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 属性中,但对于更高版本的操作系统,此属性为空。

所以你明白了。Vista/7/2008 中为 XP 提供的数据在哪里?

答案1

Win32_NetworkLoginProfile 的 LastLogon 属性应该有它。在我现在正在查看的 Win7 机器上,我打开了 wbemtest 并运行:

SELECT Name,LastLogon FROM Win32_NetworkLoginProfile

LastLogon 返回 <null> 值的唯一条目是内置帐户,例如NT 权限\系统列表中的所有其他帐户(包括域帐户和本地帐户)都具有有效的 LastLogon 值。

我不确定是什么原因导致你的系统行为不同。

相关内容