3

我希望我的 c++ 应用程序能够监听 Windows 系统事件,例如登录、注销、锁定...类似于:http : //www.dotnetspider.com/resources/30389-To-detect-when-system-gets.aspx是用 C# 编写的。
我找到了http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.aspx#Y0m,但它是一个 CLR 代码。另外,我看到 SubscribeToSystemEvent 函数在可视 C++ 中。

有谁知道在本机 C++ 中使用哪些方法?

请指教,

里龙

4

2 回答 2

5

当会话状态改变时,调用WTSRegisterSessionNotification接收WM_WTSSESSION_CHANGE窗口消息。这包括登录、注销、锁定、解锁等。确保在程序退出之前对WTSUnRegisterSessionNotification进行了相应的调用。

或者,您可以侦听WM_QUERYENDSESSIONWM_ENDSESSION窗口消息。第一个允许您阻止用户注销;第二个告诉你它是否会发生。

于 2012-07-24T13:15:33.670 回答
1

您可以尝试 krabset https://github.com/Microsoft/krabsetw,它是包装器。您还可以查看https://docs.microsoft.com/en-us/dotnet/api/system.security.accesscontrol?view=netframework-4.7.2

还可以通过 PowerShell 查看 New-WinEvent 和 Get-WinEvent

于 2019-04-09T14:07:29.693 回答