C# 如何检测Windows登录事件?

C# 如何检测Windows登录事件?,c#,.net,windows,delphi,winapi,C#,.net,Windows,Delphi,Winapi,如何检测Windows登录事件 如何从Windows服务启动用户登录 我正在尝试编写一段代码来检测登录事件并自动记录另一个事件 如何检测Windows登录事件 如果存在任何机制,则该机制可能位于WMI中。有许多WMI类。值得注意的是Win32_登录会话;它通过Win32\u LoggedonUser与Win32\u帐户相关。如果Win32\u LogonSession支持创建事件,那么这将是一种非常有效的方法 如何从Windows服务启动用户登录 LogonUserAPI允许创建新的用户令牌,然

如何检测Windows登录事件

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

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

如何检测Windows登录事件

如果存在任何机制,则该机制可能位于WMI中。有许多WMI类。值得注意的是
Win32_登录会话
;它通过
Win32\u LoggedonUser
Win32\u帐户
相关。如果Win32\u LogonSession支持创建事件,那么这将是一种非常有效的方法

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


LogonUser
API允许创建新的用户令牌,然后您可以将该令牌用于线程或进程。使用
CreateProcessWithLogonW
(及类似)允许创建用户名和密码以在不同帐户下创建进程(基本上是
LogonUser
CreateProcessWithTokenW
)。

您可以通过监视事件日志等方式检测用户登录。正如Richard所解释的,您还可以使用特定用户启动流程


但是,听起来您正在尝试执行其他操作,即交换已登录用户的登录标识。我认为这是不可能的。

或a

如果您是为Windows 2000/XP开发的,您可以使用JWA库和Delphi创建Winlogon通知包。他们让这一切变得非常简单:


如果您愿意,这还允许您在CTRL+ALT+DEL屏幕上放置表单。该表单正在系统配置文件下运行。

Winlogon通知包将从Vista中删除

使用WTSRegisterSessionNotification或。 但是,您不能以交互方式登录用户s.t。登录对话框将被删除,而显示用户桌面。这是通过winlogon使用一些注册表项完成的。LogonUser只是给你一个令牌,你可以用它来模拟用户