1

我的 Windows 服务在调用时偶尔会报告以下错误WTSEnumerateProcesses()

绑定句柄无效。

我怀疑这是由于终端服务服务不可用造成的,即使我已将终端服务服务注册为我的服务的依赖服务。

我相信即使终端服务服务正在运行,它还没有完成初始化(或正在关闭)并且无法为任何请求提供服务,从而导致错误。

我在参考文档中注意到以下内容WTSRegisterSessionNotification()

Global\TermSrvReadyEvent 全局事件设置后,所有依赖的服务都已启动,可以成功调用该函数。

这没有出现在 的文档中WTSEnumerateProcesses(),但它是否同样适用?意味着尝试OpenEvent()onGlobal\\TermSrvReadyEvent将表明终端服务服务实际上是可用的?


平台:Windows XP、Windows Vista 和 Windows 7

4

1 回答 1

0

你肯定想要OpenEvent(SYNCHRONIZE, false, L"Global\\TermSrvReadyEvent")并等待它。

所有WTS*函数都在 C API 的底层通过 RPC 调用终端服务服务(现在称为远程桌面服务服务)(参见运行时接口协议)。

与 c00000fd 所经历的相反,我从未在 Windows 7 及更高版本上遇到标准用户帐户和事件对象的问题。

于 2017-02-17T07:42:54.333 回答