WTSEnumerateProcesses和terminal服务服务

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

绑定句柄无效。

我怀疑这是由于无法使用terminal服务服务而引起的,尽pipe我已将terminal服务服务注册为我的服务的从属服务。

我相信,即使terminal服务服务正在运行,它还没有完成初始化(或正在closures),并且无法处理任何请求,从而导致错误。

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

Global \ TermSrvReadyEvent全局事件设置时,所有相关服务已启动,并且可以成功调用此函数。

这不会出现在WTSEnumerateProcesses()的文档中,但它同样适用? 意味着在Global\\TermSrvReadyEvent上尝试OpenEvent()会指示terminal服务服务实际上可用?


平台:Windows XP,Windows Vista和Windows 7

Solutions Collecting From Web of "WTSEnumerateProcesses和terminal服务服务"

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

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

与c00000fd的经验相反,我从未遇到过使用标准用户帐户的问题,并且在Windows 7及以上版本中说过事件对象。