c# - 如何从服务获取登录用户的事件窗口

标签 c# windows-services pinvoke user32

我正在编写一个 C# 服务,它必须从当前登录的用户检索信息,例如事件窗口或上次鼠标移动。 我已经了解到我可以使用 user32.dll 检索这些信息,但这只能在调用这些方法的用户上下文中起作用。

这样我的服务只能检索有关其自身的信息,而不能检索有关“现实世界”用户的信息。我还听说这应该可以通过使用 WTSEnumerateSessions、OpenWindowStation、EnumDesktops 等来实现,但我还没有找到向我展示如何执行此操作的示例。

有人知道如何实现我的目标吗?

最佳答案

这听起来很像在用户 session 中运行的应用程序的工作。一个行为良好的服务不应该这样窥探用户。 可能有办法做到这一点(老实说我不知道​​),但听起来不太……正确。

请注意,在最新版本的 Windows 中,控制台 session ( session 0)仅限于管理目的,用户(通常)不会在那里。您可能有零个、一个或多个非控制台 session 。

关于c# - 如何从服务获取登录用户的事件窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/634872/

相关文章:

c# - DllImport 与 ComImport

c# - Blittable 对比IL 中的非 Blittable

c# - 在缩放模式下平移图片框中的矩形位置

c# - 如何通过 C# 外部应用程序访问 AutoCAD 应用程序的特定实例

delphi - 编写/读取Windows注册表-Windows服务

c# - 杀毒软件误报c#.net程序为木马

c# - 调用 C++ 函数时尝试读取/写入 protected 内存错误

c# - 为什么我不能从我的 XPathNavigator 中检索属性值?

c# - 即使键存在,TryGetValue 的计算结果也为 False

windows-services - 安装 Kafka 作为 windows 服务