如何检测Windows登录事件?

时间:2009-09-19 11:28:22

标签: c# .net windows delphi winapi

如何检测Windows登录事件?

您如何从Windows服务启动用户登录?

我正在尝试编写一段代码来检测登录事件并自动记录另一条代码。

5 个答案:

答案 0 :(得分:2)

  

如何检测Windows登录事件?

如果存在任何机制,则可能是在WMI中。有许多WMI类。值得注意的是Win32_LogonSession;这与Win32_Account通过Win32_LoggedonUser相关。如果Win32_LogonSession支持创建事件,那么这将是一种非常有效的方法。

  

您如何从Windows服务启动用户登录?

LogonUser API允许创建新的用户令牌,然后您可以将该令牌用于线程或进程。使用CreateProcessWithLogonW(和类似)允许创建用户名和密码,以便在其他帐户下创建流程(主要是LogonUserCreateProcessWithTokenW)。

答案 1 :(得分:2)

如果您正在为Windows 2000 / XP开发,可以使用JWA库和Delphi创建Winlogon通知包。他们让它非常容易:

http://blog.delphi-jedi.net/2008/05/27/winlogon-notification-package/

如果您愿意,还可以在CTRL + ALT + DEL屏幕上放置表单。该表单在SYSTEM配置文件下运行。

答案 2 :(得分:1)

您可以通过监视事件日志来检测用户登录。正如理查德解释的那样,您也可以与特定用户一起开始流程。

然而,听起来你正在尝试做其他事情,即交换已登录用户的登录标识。我认为这是不可能的。

答案 3 :(得分:1)

答案 4 :(得分:1)

Winlogon通知包已从Vista中删除。

使用WTSRegisterSessionNotification或System Event Notification Service (SENS)。 但是,您无法以交互方式登录用户s.t.将删除登录对话框,而是显示用户桌面。这是由winlogon使用一些注册表项完成的。 LogonUser只为您提供了一个可用于模拟用户的令牌。