我正在使用该函数/消息来检查工作站是否已锁定。现在我的应用程序位于启动文件夹中。它在 XP pro 上运行没有任何问题,但由于我在 XP home 上使用该程序,WTSRegisterSessionNotification 在启动时大约有 50% 的时间失败,但当系统已经启动时它永远不会失败。知道为什么会发生这种情况吗?
在 XP 上,服务在后台启动,不会阻止启动或登录。当您调用 WTSRegisterSessionNotification 时,termsrv 服务很可能尚未运行。
您可以通过以下方式检查服务是否正在运行:
// Error handling omitted for brevity
SC_HANDLE scm = OpenSCManager(NULL, NULL, GENERIC_READ);
SC_HANDLE svc = OpenService(scm, L"TermSrv", SERVICE_QUERY_STATUS);
SERVICE_STATUS status;
QueryServiceStatus(svc, &status);
if (status.dwCurrentSTate != SERVICE_RUNNING) {
// Try to start, wait and try again, etc.
}
CloseServiceHandle(svc);
CloseServiceHandle(scm);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)