::FindWindow 从服务应用程序失败

Posted

技术标签:

【中文标题】::FindWindow 从服务应用程序失败【英文标题】:::FindWindow fails from Service application 【发布时间】:2008-12-04 10:17:21 【问题描述】:

从服务应用程序调用 Windows API ::FindWindow 函数失败。 GetLastError() 也返回 0(成功?)。这是一些特权\访问权问题吗?你认为这是设计问题,我应该使用另一种 IPC 方法吗?

【问题讨论】:

是的,这是一个设计问题。你肯定需要使用IPC机制,而不是在windows上操作。 【参考方案1】:

leppie 说得对,Windows 服务在与桌面交互时通常会被拒绝。您可以在 XP 和更早版本中绕过它,但在 Vista 及更高版本中无法做到这一点。您最好将桌面和用户交互委托给 GUI 应用程序。有关详细信息,请参阅此document。

【讨论】:

【参考方案2】:

服务在会话 0 中运行。在 XP 和更早版本上,第一个登录的用户也在会话 0 中运行,后续用户在会话 1 和更高版本中运行。如果该服务设置为“与桌面交互”,则它可以访问在会话 0 中运行的任何用户窗口。但是,从 Vista 开始,用户不再在会话 0 中运行。 FindWindow() 仅在调用它的 Session 的上下文中有效,因为无法跨 Session 边界访问窗口。

【讨论】:

以上是关于::FindWindow 从服务应用程序失败的主要内容,如果未能解决你的问题,请参考以下文章

windows service调用FindWindow 怎么不行

如果 iOS 购买收据验证失败怎么办?

FindWindow函数执行失败,无法找到窗口句柄

VSTS 发布中心的应用服务部署失败

Firebase 身份验证登录但成功登录后重定向到主页失败(服务器响应 200)

如何基于Fortify扫描结果使TFS构建失败