Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Terminal Server Sessions (https://www.delphipraxis.net/105985-terminal-server-sessions.html)

gargano 3. Jan 2008 12:56


Terminal Server Sessions
 
Hallo Delphianer,

erstmal ein schönes neues Jahr.

In diesem habe ich schon ein Problem:

Ich möchte herausfinden wieviele Sessions eines bestimmten Programmes auf einem Terminalserver laufen.
Hintergrund ist, daß ich nicht möchte daß ein Benutzer unzählig viele Sessions von verschiedenen Clients aus starten kann.

Am besten wäre eine Abfrage :
If ClientSessions>5 then exit;

o.Ä.
Allein diese Abfrage fehlt.

Kann jemand helfen ?

Viele Grüße
Gargano

[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]

SirThornberry 3. Jan 2008 13:01

Re: Terminal Sever Sessions
 
schau mal CreateSemaphore an. Wenn ich die hilfe recht verstehe kannst du über den Namen festlegen ob es an die Session oder Global gebunden ist.
Zitat:

The name can have a "Global\" or "Local\" prefix to explicitly create the object in the global or session name space.

gargano 3. Jan 2008 13:27

Re: Terminal Sever Sessions
 
mmh,

das bedeutet , daß ich ein Dummy Semaphore erstellen muß, um die Anzahl der Sessions
zu begrenzen.
Gibt es da keine einfachere Möglichkeit ?

Ob das Programm auf einem Terminal Server läuft, kann mich mit GetSystemMetrics($1000)
abfragen.

Viele Grüße
Gargano

SirThornberry 3. Jan 2008 13:29

Re: Terminal Sever Sessions
 
einfacher als einen Funktionsaufruf willst du es haben? also einen halben Funktionsaufruf?

gargano 3. Jan 2008 13:35

Re: Terminal Sever Sessions
 
Ich meinte damit, evtl. hat jemand eine fertige und getestete Funktion.
Also 'ready to use'.

Deinen britischen Humor kann ich Moment nicht ganz teilen. Sorry, ich bin etwas unter Zeitdruck.

Viele Grüße

Gargano

Dezipaitor 3. Jan 2008 17:01

Re: Terminal Sever Sessions
 
Hab ich das richtig verstanden?

Du willst die Anzahl der gleichzeitigen Benutzung beschränken? Seit Windows Vista (und vorher die Server Varianten) können mehrere Benutzer gleichzeitig auf einem System arbeiten. Jeder Benutzer hat dabei eine Sitzung (Sessions).

D.h. du willst alle Sitzungen und dort jeweils die gestarteten Prozesse erfahren. Wenn dein Prozess dabei ist, dann erhöhst du den Zähler.

Eine fertige Funktion kenne ich dafür jetzt nicht. Aber in der Jwscl, genauer gesagt JwsclTerminalServer.pas und JwaWinsta.pas wird daran gearbeitet. Das ist das was am nächsten deiner Lösung kommt.

SirThornberry 3. Jan 2008 17:03

Re: Terminal Sever Sessions
 
und wenn er eine feste anzahl zulassen will sollten eben semaphoren diesen Zweck erfüllen.

Dezipaitor 3. Jan 2008 17:07

Re: Terminal Sever Sessions
 
Soweit ich weiß sind Semaphoren nur pro Sitzung einzigartig. Also jedes Programm, welches in einer Sitzung gestartet wird, erhält ein eigenes Semaphorenhandle.

SirThornberry 3. Jan 2008 17:13

Re: Terminal Sever Sessions
 
das hätte ich auch gedacht. Durch folgenden Text im MSDN glaube ich inzwischen jedoch das es auch über Sessions hinweg funktioniert
Zitat:

The name can have a "Global\" or "Local\" prefix to explicitly create the object in the global or session name space.

gargano 3. Jan 2008 17:19

Re: Terminal Sever Sessions
 
Hallo Dezipaitor,

das hast Du genau richtig erfaßt. Das Ganze soll unter Terminalserver laufen, wenn die Anzahl der Clients mit meinem Programm einen Wert überschritten hat, sollen keine weiteren Programme mehr gestartet werden können, bis sich evtl. jemand anders abmeldet und die Anzahl wieder unter den Wert sinkt.

@SirThornberry
Die evtl. Lösung mit Semaphoren werde ich morgen probieren. Ich geb dann Bescheid.

Gruß
Gargano


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.
Seite 1 von 2  1 2      

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