![]() |
Teminal Server Processes
Hallo
Ich habe eine Frage betreffend JwsclTerminalServer. Und zwar möchte ich die Anzahl Prozesse der laufenden Anwendung (xyz.exe), über alle sessions hinweg herausfinden um die gleichzeitige Ausführung der App. zu beschränken. Eine ähnliche Frage ist diese: ![]() Nun bin ich nicht sicher ob zum Auslesen der Prozesse aller Sessions AdminRechte nötig sind oder nicht Gemäss Microsoft (http://msdn.microsoft.com/en-us/library/aa383831(VS.85).aspx) scheint dies der Fall zu sein wenn ich das richtig verstehe (The caller must be a member of the Administrators group to enumerate processes that are running under a different user's context.) Hätte jemand ein Tipp und evtl ein Stück Code? Ich kenn mich mit TS gar nid aus ... Da ich momentan nur beschänkt zugriff auf einen TS habe kann ich auch nicht gut testen, also hoffe ich, auf Anhieb die richtige Lösung zu haben. Vielen Dank Daniele |
Re: Teminal Server Processes
Und hier geht es weiter:
![]() Und ja, man braucht Adminrechte dazu. Viel Spass. |
Re: Teminal Server Processes
Hallo Dezipaitor
Danke für Deine Antwort. Schade klappt es nur mit Adminrechte. Kann mann die Ausführung einer exe auf ein TS denn auch irgendwie anders beschränken (ohne Adminrechte)? Wie sieht es mit semaphoren o.ä. aus ? gruss, Daniele |
Re: Teminal Server Processes
Ich kann mich erinnern, dass es dazu schonmal einen Betrag hier gab. Ich glaube es war etwas mit "globaler Mutex". Einfach mal danach suchen.
|
Re: Teminal Server Processes
Hallo Dezipaitor
habe nun nach dem mutex gesucht, bin allerdings auf folgendes gestossen, was mein Zweck erfüllen würde. Kannst Du mir bestätigen das dies auch für Terminal Server geht oder müsste ich noch etwas hizufügen ?
Delphi-Quellcode:
var
MyAtom: ATOM; initialization MyAtom := GlobalFindAtom('{03D1CB1A-5C2C-4B0D-9311-F585653FF733}'); if MyAtom <> 0 then begin MessageBox(0, 'Programm läuft bereits.', nil, MB_OK or MB_ICONEXCLAMATION); MyAtom := 0; Halt(0); end else MyAtom := GlobalAddAtom('{03D1CB1A-5C2C-4B0D-9311-F585653FF733}'); finalization if MyAtom <> 0 then GlobalDeleteAtom(MyAtom); end. |
Re: Teminal Server Processes
Nein, sollte nicht gehen.
Bitte suche im Forum nach "global mutex". Dann bekommst du gute Posts zu dem Thema mit 100% Quelltextgarantie! |
Re: Teminal Server Processes
Hallo,
zum Testen sollte auch ein XP reichen, wenn du dich mit 2 Nutzern gleichzeitig anmeldest. Heiko |
Re: Teminal Server Processes
Danke für den Tipp Heiko. Da ich mich mit TS nicht auskenne kann ich nicht abschätzen was der Code auf dem TS für Auswirkungen hat (oder ob es zusätzliches Zeug dazu braucht)
ok, Danke Christian, dies die Mutex:
Delphi-Quellcode:
implementation
uses windows,Dialogs,sysutils; var mHandle: THandle; // Mutexhandle Initialization mHandle := CreateMutex(nil,True,'Global\xxxxx'); // mHandle := CreateMutex(nil,True,'xxxxx'); // 'xxxxx' Der Anwendungsname ist hier einzutragen if GetLastError = ERROR_ALREADY_EXISTS then begin // Anwendung läuft bereits {showMessage('Anwendung läuft bereits!!!!!');} // Wenn du deine Meldung willst, mach die Klammern weg Halt; end; finalization // ... und Schluß if mHandle <> 0 then CloseHandle(mHandle) end. {Dieter Hirt} |
Re: Teminal Server Processes
Warum geht das mit dem GlobalAtom eigentlich nicht ?
|
Re: Teminal Server Processes
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz