如何检测Windows登录事件?
您如何从Windows服务启动用户登录?
我正在尝试编写一段代码来检测登录事件并自动记录另一条代码。
答案 0 :(得分:2)
如何检测Windows登录事件?
如果存在任何机制,则可能是在WMI中。有许多WMI类。值得注意的是Win32_LogonSession
;这与Win32_Account
通过Win32_LoggedonUser
相关。如果Win32_LogonSession
支持创建事件,那么这将是一种非常有效的方法。
您如何从Windows服务启动用户登录?
LogonUser
API允许创建新的用户令牌,然后您可以将该令牌用于线程或进程。使用CreateProcessWithLogonW
(和类似)允许创建用户名和密码,以便在其他帐户下创建流程(主要是LogonUser
加CreateProcessWithTokenW
)。
答案 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只为您提供了一个可用于模拟用户的令牌。