Deine Frage ist leider etwas unverständlich formuliert
Ja, ich probier's nochmal.
Es gibt folgende Rechner:
A - Windows Server 2003/Terminal Server,
nach dem Neusprech von Microsoft heisst das nicht mehr Terminal Server sondern Remote Desktop Session Host.
B - Windows 7
C - Windows XP
Mein Programm muss je nach dem ob es auf einem Terminal Server oder auf einer Workstation läuft unterschiedlich reagieren (andere Pfade usw).
Szenario 1:
Anwendung läuft ganz normal auf Rechner B
Szenario 2:
Rechner C stellt eine RDP-Verbindung zu Rechner A her und startet dort meine Anwendung.
Szenario 3:
Benutzer von Rechner B braucht Hilfe. Deshalb verbindet sich Rechner C mit B und startet meine Anwendung.
Und jetzt denkt meine Anwendung sie würde auf einem Terminal Server laufen und reagiert falsch weil sie ja in Wirklichkeit auf einer Arbeitstation läuft.
Ich möchte also Szenario 2 von 3 unterscheiden können.
Ich könnte nun meine Funktion zur Erkennung der Betriebsart erweitern:
Delphi-Quellcode:
function IsServerOS:boolean;
begin
// rauszufinden ob wir auf einem Server OS laufen
// GetVersionEx
Result := ...;
end;
function IsRemoteTerminalServerSession:Boolean;
const
SM_REMOTESESSION = $1000;
// in Windows.pas nicht enthalten
begin
result := (GetSystemMetrics( SM_REMOTESESSION ) <> 0)
and
IsServerOS;
end;
Ich möchte die Funktion IsServerOS gerne vermeiden weil sie aufwändig (bei Delphi5 fehlen die nötigen Strukturen) und nicht sicher ist.