AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Service starten/stoppen ohne/mit Adminrechten/Elevation
Thema durchsuchen
Ansicht
Themen-Optionen

Service starten/stoppen ohne/mit Adminrechten/Elevation

Ein Thema von chaosben · begonnen am 9. Aug 2011 · letzter Beitrag vom 10. Aug 2011
Antwort Antwort
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#1

Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 9. Aug 2011, 18:54
Helft mir mal bitte auf die Sprünge:

Wenn ich unter Win7(64) ein Delphi-Programm mit "normalen" Rechten (ich bin Mitglied der Gruppe Administratoren) laufen lassen, kann es keine Dienste anhalten/starten (GetLastError = Access denied). Starte ich es mit Adminrechten (händisch oder per Manifest) funktionierts.

Bis hier hin verstehe ich es.

Gehe ich aber in die Diensteverwaltung kann ich Dienste anhalten/starten ohne das ich die Adminrechte vorher bestätigen muss.
Warum geht das? Oder anders gefragt: Wie bekomme ich das gleiche Verhalten für mein Delphi-Programm?
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#2

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 08:24
Hallo,

"install" oder "setup" im Dateinamen deiner ausführbaren Datei dürfte das Problem beheben.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.195 Beiträge
 
Delphi 12 Athens
 
#3

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 08:35
Für die Diensteverwaltung muß man bestimmt auch gewisse Rechte "aktiv" haben, welche wohl in der Diensteverwaltung aktiviert wurden, aber in deinem Programm standardmäßig nicht.

Als mit Adminmanifest ist dein Programm nun nicht beschnitten und darum läuft es dort.

Jetzt müßtest du also nur noch rausfinden, welches Recht du aktivieren mußt, versuchst es in deinem Programm zu aktivieren und könntest dann vermutlich auch ohne Admin-Manifest was machen.

"install" oder "setup" im Dateinamen deiner ausführbaren Datei dürfte das Problem beheben.
Wozu bitte solche Hacks?

Wenn er in seinem Manifest die Win7-Kompatibilität seines Programms bestätigt, dann wird sowas nicht gemacht, da dieses "nur" ein Kompatibilitätsmodus für alte oder "schlechte" Setupprogramme ist, wo das Admin-Manifest vergessen wurde/noch nicht vorhanden ist, da es damals ja unbekannt war/nicht existierte.
Und ich hoffe mal, daß M$ dieses irgendwann auch wieder ausbaut.

PS: Ob mit Admin-Manifest oder diesem Namenshack ... es sollte sich überall das UAC melden, also dann lieber gleich das Manifest.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 08:41
Jetzt müßtest du also nur noch rausfinden, welches Recht du aktivieren mußt, versuchst es in deinem Programm zu aktivieren
Welche Art Rechte meinst du denn? Mir fehlt im Moment jeder Ansatz. Mir reicht auch ein MSDN-Link/Stichwort.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 08:44
Vielleicht hilft dieser Artikel (willkürlich gewählt) weiter: StartService
Zitat:
hService [in]

A handle to the service. This handle is returned by the OpenService or CreateService function, and it must have the SERVICE_START access right. For more information, see Service Security and Access Rights.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 08:59
Das ist soweit klar. Ich muss beim Öffnen des Dienstes sagen, was ich mit ihm machen will.
In diesem Fall sieht der Code so aus:
OpenService(scm, PWideChar(WideString(FServiceName)), SERVICE_QUERY_STATUS or SERVICE_START or SERVICE_STOP)

Bleibt noch die Frage: wie bekommt mein Programm das Recht dies zu tun?
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)

Geändert von chaosben (10. Aug 2011 um 09:00 Uhr) Grund: Zeilenumbruch eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 09:05
Wenn man dem Link zu "Service Security and Access Rights" folgt, kommt man ziemlich am Ende zu einem weiteren Link, der dann hierhin führt. Evtl. kann das als Ansatz dienen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation

  Alt 10. Aug 2011, 11:25
Gehe ich aber in die Diensteverwaltung kann ich Dienste anhalten/starten ohne das ich die Adminrechte vorher bestätigen muss.
Warum geht das? Oder anders gefragt: Wie bekomme ich das gleiche Verhalten für mein Delphi-Programm?
Wenn ich mich richtig entsinne, wurde mit Windows 7 doch die Nachfragerei der UAC verbessert. Sie ist jetzt einstellbar in ihrer "Hartnäckigkeit" des Nachfragens. Ich nehme schwer an, dass wenn du die Stufe nach ganz oben stellst, die Diensteverwaltung ebenso eine Admin-UAC-Abfrage generiert - also bei mir ist es zumindest so.

Ich denke an den Rechten die Du benötigst ändert sich gar nichts. Es dürfte damit zu tun haben, was man tun muss, damit man ein Programm erzeugen kann, dass bei entsprechend niedriger Stufe (weniger UAC-Nachfragen) auch keine Nachfrage erzeugt.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  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 19:08 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