2010-11-16 72 views
0

有没有一种可靠的方式来确定登录到系统的最后一个用户名?我已经看过LsaEnumerateLogonSessions()和LsaGetLogonSessionData(),但是他们需要在Vista和更高版本上提升(我非常想避免)。 WMI有同样的问题(大概是在幕后调用Lsa)。WIN32 - 最后一位用户登录

我也看过HKLM中的“SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Authentication \ LogonUI \ LastLoggedOnUser”,但在测试中不可靠并且没有更新。

我真的只对控制台登录感兴趣,而不是快速用户切换或TS登录。

我已阅读过各种文章,但尚未提出一个很好的解决方案。

+0

XY问题。 Y是“我很难突破登录安全层”。什么是X? – 2010-11-16 14:42:57

+0

我不想突破安全层。我试图找出是否有办法让我的应用程序在不需要提升的情况下运行。不知道如何找到最后一个登录用户的用户名(只有用户名)会带来很大的安全风险,特别是如果应用程序已经在运行? – 2010-11-16 15:18:30

+1

我想了解有关您的应用的更多信息以及问题出现的原因。基于上述情况,很难想象为什么知道谁最后登录会帮助你的应用做任何非常明智的事情。 – 2010-11-16 16:32:53

回答

0

您可能能够使用Audit Logon events - 这需要您的服务拥有用户访问权限才能看到安全日志,但不能成为完整的管理员。

Eventid 528指示登录的人,你必须找到最近的这个实例。

+0

谢谢。这看起来像我唯一的答案,我会这样做,并回落到注册表,如果审计没有启用。令人沮丧的是,除了窗户以外的其他每个平台都可以让您获得这些信息而无需提升访问权。 – 2010-11-19 11:12:52

相关问题