В XP службы запускаются в фоновом режиме и не блокируют загрузку или вход в систему. Скорее всего, служба termrv не будет запущена к тому времени, когда вы вызываете WTSRegisterSessionNotification.
Вы можете проверить, работает ли служба:
// 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);