- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要在 Windows XP SP3 上跟踪当前用户(使用控制台的用户)。
我尝试了以下方法:
Microsoft.Win32.SystemEvents.SessionSwitch:适用于单一登录/注销事件,但无法检测切换用户。
如果出现以下情况:
SystemEvents.SessionSwitch 未检测到事件 3 和 4
监控“安全”事件日志:事件不一致且无序到达。例如,如果重播上面的列表,我会收到一个事件 ID 528(登录),然后是用户 A 恢复 session 后的两个 538(注销)。检查 event.TimeGenerated 没有帮助。如果在 SecPol.msc 上禁用审核,此方法也不起作用。
P/调用 WTSRegisterSessionNotification:工作正常。我必须创建一个隐藏窗体,覆盖其 WndProc 以处理 WM_WTSSESSION_CHANGE 消息,然后调用 WTSQuerySessionInformation 以获取与事件关联的用户名。这个方法看起来太复杂了,有没有更简单的方法?
编辑:
最佳答案
如果您正在提供服务,您的类将派生自 ServiceBase
。考虑调查 OnSessionChange方法。覆盖此方法以检测不同类型的 session 更改。它提供 session 更改的原因和新的 session 标识符。确保在您的构造函数中设置 CanHandleSessionChangeEvent为 true
,否则您的覆盖将不会被调用。
关于c# - 如何让 .NET Windows 服务检测登录、注销和切换用户事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353066/
我是一名优秀的程序员,十分优秀!