Die Funktion
WTSGetActiveConsoleSessionId gehört zur Terminal Services
API und ist in älteren Windows Versionen sicher nicht in der kernel.dll enhalten.
Die
MSDE sagt: "Requires Windows Vista or Windows XP"
Es gibt 3 Varianten, wie man mit dem Problem umgehen kann: die Richtige, die Falsche und die ganz Falsche!
ganz Falsch:
die Funktion wird einfach statisch gelinkt.
Falsch:
man fragt zuerst die Windows Version ab. Wenn die Windows Version >= Win 2000 (
nur ein Bespiel), dann geht man davon aus, dass WTSGetActiveConsoleSessionId vorhanden ist.
Richtig:
Man ignoriert die Windows Version und holt die Einsprungadresse mit GetProcAddress().
Bekommt man nil zurück (und dass muss man immer abfragen) ist die Funktion eben nicht verfügbar
und das Programm muss seine Funktionalität einschränken (
Graceful degradation)