Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Terminalserver oder nicht? (https://www.delphipraxis.net/61668-terminalserver-oder-nicht.html)

chefdackel 24. Jan 2006 19:19


Terminalserver oder nicht?
 
Die Frage werden sich in Zukunft wahrscheinlich immer mehr stellen: "darf" meine Software in einer Terminalserver-Sitzung laufen oder nicht? Ich bin jetzt darauf gekommen, weil es ja theoretisch möglich ist, dass ein "Provider" meine Software lizensiert, diese vielleicht 10 x auf demselben Server installiert (oder einfach kopiert) und dann jeweils eigene Lizenzen vergibt - als Terminalserver-Zugänge. Nicht die feine Art, aber wird schon gemacht.

Daher die Frage: wie kann ich mit Delphi feststellen, ob mein Programm auf einem normalen Desktop oder in einer Terminalserver-Sitzung läuft? Gibt es weitere Informationen, die ich über den aktuellen Anwender/ die TS-Sitzung erhalten kann? Zusätzlich wäre interessant, wenn die einzelne Sitzung Informationen setzen und lesen kann, die auch von anderen Sitzungen gelesen werden können. Die Registry fällt ja in der Regel aus, da den meisten TS-Anwender die entsprechenden Rechte fehlen.

Und was ist eine gute Idee überhaupt zu verhindern, dass eine Software mehrfach (also in unterschiedliche Verzeichnisse) installiert wird? Das Setzen (bzw. Überschreiben) des Installationsverzeichnisses bei der Installation in der Registry ist eine Möglichkeit, aber vielleicht gibt es intelligentere Lösungen?

Vielleicht sollte ich noch erwähnen, dass ich z.Zt. mit D7 Enterpise programmiere. Möglicherweise haben Folgeversionen ja erweiterte Funktionen in dieser Richtung.

NicoDE 24. Jan 2006 19:44

Re: Terminalserver oder nicht?
 
Sieh dir das mal an: Kernel Object Namespaces.

donpeppone 12. Jul 2006 13:33

Re: Terminalserver oder nicht?
 
Um festzustellen, ob sich dein Programm in einer TerminalServerSession
befindet fragst du folgendes ab:
Delphi-Quellcode:
function IsRemoteSession:Boolean;
const
 sm_RemoteSession = $1000; // from WinUser.h
begin
 IsRemoteSession := (GetSystemMetrics(sm_RemoteSession) <> 0);
end;
Habe es unter MSTSC getestet.. andere noch nicht..

VG DP!

NicoDE 14. Jul 2006 08:04

Re: Terminalserver oder nicht?
 
Es ging damals nicht um die Frage ob das Programm in einer Terminalsitzung läuft oder nicht, sondern um die Frage, ob eine andere Instanz des Programms bereits auf diesem Rechner läuft (in allen aktiven Sessions).


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz