AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows Dienst installieren und starten mit Berechtigungen
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Dienst installieren und starten mit Berechtigungen

Ein Thema von Trille · begonnen am 19. Mai 2008 · letzter Beitrag vom 19. Mai 2008
Thema geschlossen
Trille

Registriert seit: 25. Sep 2007
62 Beiträge
 
#1

Windows Dienst installieren und starten mit Berechtigungen

  Alt 19. Mai 2008, 13:02
Hallo allerseits,
ich möchte mir einen Windows-Dienst erstellen, der beim Starten eine Applikation ausführt. Das habe ich mit ShellExecute gemacht.
(Dazu habe ich auch eine Frage, dazu später mehr). Nun möchte ich aber, dass der Dienst nur von einem Administrator installiert werden kann, jedoch von "normalen Benutzern" gestartet werden kann.

Folgende Fragen habe ich dazu:

I: Was übergibt man in der shellExecute als Handle? Ich habe viele Beispiele gefunden, wo einfach nur HANDLE übergeben wird, jedoch ist bei mir (bei einem Service) diese Variable nicht definiert. Von daher habe ich 0 genommen. Ist das in Ordnung?

II: Sind die Ereignisse beforeInstall und onStart die passenden Ereignisse, um die Berechtigungen zu überprüfen und ggf. den Installationsvorgang bzw. den Start zu verhindern?

III: Wie bekomme ich heraus, ob ein Benutzer Administrator ist bzw ob der normaler, angemeldeter Benutzer ist? Ist die Methode Windows.GetUserObjectSecurity() hier hilfreich?

Da ich auf dem Gebiet Windows und Dienste nicht sehr bewandert bin, möge man mir meine wahrscheinlich dummen Fragen verzeihen. Eine Suche im Forum und bei Google hat da leider auch nicht viel dran geändert.
 
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Windows Dienst installieren und starten mit Berechtigung

  Alt 19. Mai 2008, 13:05
Normalerweise macht man hier pro Frage einen Thread auf
Zu I. (Self.)Handle ist das Handle der Form, von welcher die ausgeführte Methode stammt. Da dein Dienst wahrscheinlich kein Fenster hat, hat er auch kein Handle. Was anderes außer 0 bleibt dir da imho nicht übrig.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
 
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Windows Dienst installieren und starten mit Berechtigung

  Alt 19. Mai 2008, 13:07
1.) ShellExecute innerhalb eines Service solltest du ganz schnell vergessen. Wenn du dort ein Programm startest hat dieses Programm keinen Desktop etc. und ist somit niemals sichtbar.
2.) Die Ereignisse sind nicht der Richtige Ort. Denn das Windowsrechtesystem regelt das nur Administratoren Dienste Starten, Stoppen etc. dürfen. Du musst dir also etwas anderes überlegen.
3.) hat sich eigentlich durch zweitens erledigt.

4.) Es gilt - Eine Frage pro Thread damit es übersichtlich bleibt. Zudem kann dann für jede Frage der entsprechend aussagekräftige Titel gewählt werden.

bitte mache für jede Frage einen eigenen Thread auf Wie du schon bei Punkt 1 siehst, ist das was du vorhast wohl nicht ganz so einfach. Entsprechend werden deine Fragen wohl sehr umfangreich diskutiert und bei mehreren Fragen durcheinander wird das dann irgendwann ein riesen Durcheinander.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
 
Benutzerbild von Luckie
Luckie

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

Re: Windows Dienst installieren und starten mit Berechtigung

  Alt 19. Mai 2008, 13:12
Lies dir am besten erst mal elementare Grundlagen bezüglich der Windows Sicherheit an und wie sie funktioniert, sonst gibt das nichts. Ich weise heute bestimmt schon zum dritten mal daraufhin, dass ein Dienst in einer anderen WindowsStation läuft und somit keinen Zugriff auf die Desktops in deiner interaktiven WindowsStation. Das mit Shellexecute gestartete Programm dürftes du deshalb nie zu sehen bekommen.

Ein Dienst kann nur von einem Administrator gestartet oder gstoppt werden. Bei sowas immer fragen: "Was wäre wenn...?" Könnte ein normaler Benutzer Dienste starten und stoppen, wäre die ganze Benutzerverwaltung und das Rechtesystem für den Popo. Denn dann könnte er die Firewall und den Virenscanner einfach ausschalten und mit dem Starten eines Dienstes sich selber höhere Benutzerrechte verschaffen. Von Sicherheit bleibt dann nicht mehr viel übrig.

Um zu ermitteln, ob ein Benutzer zur Gruppe der Adminsitratoren gehört bzw. administartive Rechte besitzt gibt es mehrer Methoden. Sie sollten mit der Forensuche relativ leicht zu finden sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
 
Thema geschlossen


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 10:45 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