AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

Ein Thema von gpvg · begonnen am 27. Mär 2008 · letzter Beitrag vom 30. Mär 2008
Antwort Antwort
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#1

Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 27. Mär 2008, 10:18
Der Dienst läuft als Benutzer SYSTEM auf dem PC des Anwenders. Was ich benötige, ist eine Funktion, die vom Programm des Benutzers aufgerufen wird und eine Funktion, die der Dienst aufruft, um den Benutzer zu ermitteln. Also im Prinzip ein ganz simples "Wer will da was von mir?".

Weiß jemand, wie das geht?

Bisher habe ich die Anwendung immer so geschrieben, daß sie ihre Wünsche an den Dienst in eine Datei schrieb, die dieser auslas. In dieser Datei stand dann auch immer der Benutzername. Diese Methode ist in einer Umgebung, die ein wenig Sicherheit erfordert, allerdings unbrauchbar.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 27. Mär 2008, 10:38
Hallo,

zu Dienste-Komminukation fällt mir memory mapped file, oder pipes ein.

Zu deinem Nutzerproblem gar nichts.
Es könnte ja auch ein Dienst sein, der deinen Dienst nutzt,
da muss kein Nutzer angemeldet sein.


Heiko
Heiko
  Mit Zitat antworten Zitat
wido

Registriert seit: 2. Jan 2006
122 Beiträge
 
#3

Re: Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 27. Mär 2008, 10:41
Soweit ich weiß gibt es da keine Möglichkeit herauszufinden wer da was von Dir will. Zumindest nicht wenn Du bei deinem Dateiansatz bleiben willst. Du kannst aber bei diversen IPC Methoden wie z.B. Named Pipes oder prinzipiell auch bei deiner "Dateilösung" über ACLs den Zugriff auf deine Ressourcen für bestimmte Benutzer- und Benutzergruppen definieren, so daß bestimmte Benutzer die Datei/Pipe gar nicht erst öffnen können. Das wäre die sauberste Variante. Nun ist natürlich die Frage, ob Dir so eine Auflösung bis auf Benutzerebene reicht oder ob Du noch exakt den Prozess haben willst, der da was von Dir will.
  Mit Zitat antworten Zitat
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 27. Mär 2008, 12:08
Zitat von wido:
Soweit ich weiß gibt es da keine Möglichkeit herauszufinden wer da was von Dir will. Zumindest nicht wenn Du bei deinem Dateiansatz bleiben willst. Du kannst aber bei diversen IPC Methoden wie z.B. Named Pipes oder prinzipiell auch bei deiner "Dateilösung" über ACLs den Zugriff auf deine Ressourcen für bestimmte Benutzer- und Benutzergruppen definieren, so daß bestimmte Benutzer die Datei/Pipe gar nicht erst öffnen können. Das wäre die sauberste Variante. Nun ist natürlich die Frage, ob Dir so eine Auflösung bis auf Benutzerebene reicht oder ob Du noch exakt den Prozess haben willst, der da was von Dir will.
Ich muß noch ein wenig genauer werden. Es gibt ein Gruppe, die den Dienst benutzen darf. Über Berechtigungen ließe sich natürlich der Zufriff auf die Datei (oder Pipe, oder Registryeintrag ...) regeln. Nur müßte der Dienst für jeden Benutzer aus dieser Gruppe eine eigene Datei kontrollieren. Ist bei vielen Benutzern nur eine unnötige Belastung des Systems.

Daher halte ich den Ansatz für praktikabler, erst einmal den Benutzer zu ermitteln, dann seine Gruppenzugehörigkeit zu ermitteln und dann zu entscheiden, ob der Benutzer auch zur Nuzung berechtigt ist.
  Mit Zitat antworten Zitat
wido

Registriert seit: 2. Jan 2006
122 Beiträge
 
#5

Re: Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 27. Mär 2008, 13:27
Zitat von gpvg:
Ich muß noch ein wenig genauer werden. Es gibt ein Gruppe, die den Dienst benutzen darf. Über Berechtigungen ließe sich natürlich der Zufriff auf die Datei (oder Pipe, oder Registryeintrag ...) regeln. Nur müßte der Dienst für jeden Benutzer aus dieser Gruppe eine eigene Datei kontrollieren. Ist bei vielen Benutzern nur eine unnötige Belastung des Systems.
Der Service müsste mitnichten für jeden Benutzer eine eigene Datei kontrollieren. Wozu hast Du sie denn in eine Gruppe getan? Du musst nicht mal für mehrere Gruppen mehrere Dateien benutzen, weil Du mehrere Gruppen hinzufügen kannst zu deiner ACL. Ist ja nicht so, daß so ne ACL nur einen Eintrag zulassen könnte.

Zitat von gpvg:
]Daher halte ich den Ansatz für praktikabler, erst einmal den Benutzer zu ermitteln, dann seine Gruppenzugehörigkeit zu ermitteln und dann zu entscheiden, ob der Benutzer auch zur Nuzung berechtigt ist.
Der praktikabelste Ansatz ist, Windows mitzuteilen, wer mit deinem Service kommunizieren darf und wer nicht, und Windows das Rechtemanagement durchführen zu lassen. Dann brauchst Du Dich um das Geraffel nämlich gar nicht mehr zu kümmern.

Ich halte es übrigens für nicht sinnvoll IPC mit dem Service über Dateien zu realisieren. Gibt da durchaus bessere Mechanismen wie z.B. Named Pipes.

Ansonsten wäre es sinnvoll, wenn Du ein paar Informationen rausrückst wie sich deine Situation darstellt und was genau Du implementieren willst. Derweil wirkt das alles so Wischiwaschi irgendwie .
  Mit Zitat antworten Zitat
gpvg

Registriert seit: 22. Mär 2007
Ort: Erfurt
18 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Wie kann ein Dienst feststellen, wer ihn gerade benutzt?

  Alt 30. Mär 2008, 20:15
Zitat von wido:
Der praktikabelste Ansatz ist, Windows mitzuteilen, wer mit deinem Service kommunizieren darf und wer nicht, und Windows das Rechtemanagement durchführen zu lassen. Dann brauchst Du Dich um das Geraffel nämlich gar nicht mehr zu kümmern.
Wenn ich eine Gruppe mit den Mitgliedern A und B habe, so weiß der Dienst dann noch immer nicht, ob es A oder B war, der da etwas will.

Ansonsten ist es natürlich hilfreich, die Nutzung gleich über die Rechteverwaltung von Windows zu beschränken. Aber auch hier stellt sich für mich die Frage, wie man das in Delphi realisiert.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:30 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