c# - 从 Windows 服务枚举打开的窗口

标签 c# windows service

我想枚举给定进程的子窗口来检查对话框窗口。由于我不会在这里讨论的原因,如果发现任何问题,我想随后终止该应用程序。

运行独立应用程序来执行此操作不会出现任何问题。该应用程序可以访问(通过一些 P/Invoke 调用)进程的窗口,我可以随后终止该应用程序。

但是,将相同的代码作为服务运行并不能按预期工作。运行该服务的用户似乎无法与桌面交互(这是我只能在本地系统帐户中看到的设置)。

有谁知道这个问题有什么解决办法吗?我是否可以从 Windows 服务枚举进程的窗口?

仅供引用 - 我正在使用的代码(至少是其改编版)可在此处找到:https://stackoverflow.com/a/1405088/2115261

最佳答案

您可能运行的是 Windows 7(或 8 或 Vista),因为 Windows 服务与桌面交互的功能最后是在 Windows XP 中支持的。

有一个white paper on MSDN描述了针对 Vista 及更高版本所做的更改。基本上,现在不可能以任何方式与桌面交互。

但是,有an example on CodeProject它演示了如何从 Windows 服务与任务计划程序交互,并且任务计划程序执行的进程可以与桌面交互。也许这对您来说是一个合适的解决方法。

关于c# - 从 Windows 服务枚举打开的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694989/

相关文章:

c# - 如何将 reCAPTCHA 验证失败添加到 @html.ValidationSummary 列表中

c++ - 在 Windows 的 Eclipse C++ 中运行 Hello World 应用程序

android - Android 服务是否从单独的线程而不是 UI 运行?

windows - 如何在docker工具箱中设置代理?

angular - 如何编写需要构造函数参数的服务?

android - 从具有唤醒锁的服务运行的线程是否需要唤醒锁?

c# - Linq 2 SQL查询优化

c# - 在自己的匿名 Tick 事件处理程序中停止 DispatcherTimer

c# - 在 C# 中嵌套 'using' 相当于 typedef

windows - 如何执行 If 循环并使用批处理查找文本