AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängig) ?
Thema durchsuchen
Ansicht
Themen-Optionen

Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängig) ?

Ein Thema von xineohp · begonnen am 4. Jun 2005 · letzter Beitrag vom 4. Jun 2005
Antwort Antwort
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#1

Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängig) ?

  Alt 4. Jun 2005, 16:53
Hi,

Ich bräuchte ein Mutex/Semaphore, das systemweite Gültigkeit hat, d.h. es muss auch über Benutzerkonten(-Grenzen) hinweg gültig sein. Leider sind meine Erfahrungen zu diesem Thema recht gering und meine bisherigen Versuche mit den hier zu findenden Codebeispielen sind auch alle fehlgeschlagen(=haben nicht den gewünschten Erfolg gehabt).

MfG
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 17:15
Was willst du erreichen? Wozu brauchst du das?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 17:29
Es handelt sich bei dem Ganzen um ein Steuerprogramm für meinen Router, das aus Performance-Gründen auf jedem PC nur einmal laufen sollte. Zum Starten steht es momentan im Autostartordner, wodurch es bei jedem Login eines Benutzers gestartet wird. Es würde aber reichen, wenn es nur bei ersten Mal gestartet wird und bei den folgenden Logins lediglich in den Vordergrund geholt wird.
Im Prinzip täte es auch eine Art Service mit Interface.

Ich bin für alle Lösungsvorschläge offen
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 20:36
Zitat von xineohp:
Hi,

Ich bräuchte ein Mutex/Semaphore, das systemweite Gültigkeit hat, d.h. es muss auch über Benutzerkonten(-Grenzen) hinweg gültig sein. Leider sind meine Erfahrungen zu diesem Thema recht gering und meine bisherigen Versuche mit den hier zu findenden Codebeispielen sind auch alle fehlgeschlagen(=haben nicht den gewünschten Erfolg gehabt).
Sowohl Mutexe als auch Semaphoren existieren systemweit. Du mußt also nichts extra tun um das zu erreichen. Auf Terminal-Servern gibt es noch die Besonderheit mit \Global und \Local, aber das ist dokumentiert.

Ich denke, daß du eventuell den DACL so setzen mußt, daß er auch Zugriff aus anderen Benutzerkonten erlaubt.

Nachtrag: Der NULL-DACL setzt eben nur Zugriff fürs aktuelle Benutzerkonto. Ergo mußt du den DACL selber setzen wie benötigt.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 20:45
Zitat:
DACL
Zitat:
NULL-DACL
?? Sagt mir leider gar nichts
Könntest du mir erläutern, was darunter zu verstehen ist?
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#6

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 20:53
Zitat von xineohp:
Zitat:
DACL
Zitat:
NULL-DACL
?? Sagt mir leider gar nichts
Könntest du mir erläutern, was darunter zu verstehen ist?
DACL ist die Abkürzung für:
"Discretionary ACL"
Der DACL ist zuständig dafür, daß Zugriffe beschränkt oder freigegeben werden. Die Vergabe von Rechten ist viel feinkörniger als bei Standard-Unix, wo aber auch bereits Erweiterungen für ACLs existieren. ACLs kann man für so ziemlich jedes Objekt in Windows vergeben.

ACL wiederum heißt Access Control List. Neben dem DACL gibt es noch den SACL (System ACL, welcher zuständig ist für Zugriffsüberwachung).

Schau mal hier (C-Deklaration):
Code:
HANDLE CreateMutex(
  [color=red]LPSECURITY_ATTRIBUTES lpMutexAttributes,[/color]
  BOOL bInitialOwner,
  LPCTSTR lpName
);
Achte immer auf den Parameter mit den "Security Attributes". Dort übergibst du auch den DACL, SACL usw.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 21:02
hm, Ich muss also den "benötigten" DACL an der rot markierten Stelle einsetzen, soweit so klar. Nur, wo krieg ich den her?
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#8

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 22:22
Zitat von xineohp:
hm, Ich muss also den "benötigten" DACL an der rot markierten Stelle einsetzen, soweit so klar. Nur, wo krieg ich den her?
Tja, so trivial ist die Erstellung nicht, es sei denn man kann auf Windows 2000 aufwärts aufbauen. In letzterem Fall gibt es die SDDL (Security Descriptor Definition Language). Ansonsten mußt du quasi manuell den SD (Security Descriptor) basteln. Der besteht aus der SID (Security ID) des Eigentümers, dem SACL und dem DACL und, ich glaube, noch aus der SID der sog. (Primär-)Gruppe (für die Posix-Kompatibilität).

Um einen SD aufzubauen und alles was enthalten ist, gibt es eine ganze Litanei and Funktionen, die erst ab Windows 2000 stabil benutzbar ist, wo wiederum die SDDL die bessere Lösung wäre. Unter anderem gibt es folgende Funktionen:

GetSecurityDescriptorControl, GetSecurityDescriptorDacl, GetSecurityDescriptorGroup, GetSecurityDescriptorLength, GetSecurityDescriptorOwner, GetSecurityDescriptorSacl, IsValidSecurityDescriptor, SECURITY_DESCRIPTOR, SetSecurityDescriptorDacl, SetSecurityDescriptorGroup, SetSecurityDescriptorOwner, SetSecurityDescriptorSacl

Es gibt kommerzielle Komponenten um die Arbeit mit SDs, ACLs usw. zu vereinfachen, freie sind mir nicht bekannt.
Ansonsten suche mal in der DP nach den Namen der Funktionen. Ich bin mir ziemlich sicher, daß unlängst ein Beispiel gepostet wurde, wo die Funktionen in Aktion waren. Ich denke von sakura. Ich werde selber nochmal suchen, ansonsten schreibe ihm mal eine PN. Kann mich aber auch täuschen.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#9

Re: Semaphore / Mutex -- Systemweit(=benutzerkontenunabhängi

  Alt 4. Jun 2005, 23:09
Oje, das kann ja was werden ... Ich befürchte das Ganze übersteigt meine Kenntnisse um einiges.
Ich glaube ich nehme es hin, dass die Performance etwas leidet und verzichte auf größere Eingriffe. In meinem Fall würden die Kosten den Nutzen weit übersteigen. Vielen Dank für deine Bemühungen.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 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