Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Service starten/stoppen ohne/mit Adminrechten/Elevation (https://www.delphipraxis.net/162152-service-starten-stoppen-ohne-mit-adminrechten-elevation.html)

chaosben 10. Aug 2011 11:15

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation
 
Zwei **** ein Gedanke ;)

Die 3 Privileges(ChangeNotify, CreateGlobal, Impersonate) die die MMC.exe hat helfen auch nicht weiter. :(

ChrisE 10. Aug 2011 11:25

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

Zitat von chaosben (Beitrag 1115862)
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

himitsu 10. Aug 2011 11:30

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

Zitat von chaosben (Beitrag 1115945)
Die 3 Privileges(ChangeNotify, CreateGlobal, Impersonate) die die MMC.exe hat helfen auch nicht weiter. :(

War Impersonate nicht sowas wie das Ändern von Rechten/Privilegien? :stupid:

Wie dem auch sei ... aktiviere die doch mal bei dir uns schau ob es dann geht, eventuell zusammen mit dem Code von DeddyH.

chaosben 10. Aug 2011 11:34

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation
 
Mit "helfen auch nicht weiter" meinte ich eigentlich: habs ausprobiert und nützt nix :)

Natürlich könnte ich mich als Administrator-User impersonaten ... aber das ist ja nicht Sinn der Sache.

ChrisE 10. Aug 2011 11:38

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation
 
Hallo chaosben,

nur damit ich es verstehe - geht es Dir darum einen Dienst starten / stoppen zu können ohne die Admin-Nachfrage oder geht es dir darum es generell als Benutzer tun zu können?

Ich glaube als Benutzer hast du wenig möglichkeiten Dienste zu steuern. Dein (Sub)Programm braucht auf jeden Fall die Rechte dafür. Ob das Starten des (Sub)programms mit hohen Rechten allerdings mit dem UAC-Dialog ein her geht steht meiner Meinung nach auf einem anderen Blatt.

Gruß, Chris

chaosben 10. Aug 2011 11:52

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation
 
Ich als Entwickler kann alles machen, wie es mir gefällt.
Aber eine Komponente von mir soll einen (in diesem Fall Firebird) Dienst anhalten und wieder starten können.
Das ist der Sinn der ganzen Diskussion.

rollstuhlfahrer 10. Aug 2011 11:57

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

Zitat von chaosben (Beitrag 1115957)
Aber eine Komponente von mir soll einen (in diesem Fall Firebird) Dienst anhalten und wieder starten können.

Dann muss die sich die Admin-Rechte selber besorgen. Und dann kommt auch der UAC-Dialog und der User muss das händisch bestätigen, dass das Programm das auch darf.

Grund ist, wie Chris schon bemerkt hat: Deine UAC-Einstellungen sind nur auf der 2. Stufe (nicht ganz oben). Das heißt: Alles aus der Systemsteuerung bekommt automatisch die besseren Rechte zugewiesen. Du musst dann für die Systemsteuerung nichts bestätigen. Für alles andere aber schon.
Wenn du jetzt deine UAC-Einstellung nach ganz oben schiebst, dann musst du auch für mmc.exe und Konsorten Admin-Rechte explizit vergeben.

Bernhard

PS: Es gibt noch eine ziemlich unschöne Möglichkeit: Du kannst in den Windows-Einstellungen eine Ausnahme für dein Programm einbauen, dass es immer und ohne Nachfrage an den User mit Admin-Rechten startet.

ChrisE 10. Aug 2011 11:58

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

Zitat von chaosben (Beitrag 1115957)
Ich als Entwickler kann alles machen, wie es mir gefällt

Das ist mir klar, ich meinte auch den Benutzer als "Rechteinhaber" unter Windows. Nicht Dich als physische Person :-)

Ich wollte eigentlich auf etwas anderes Raus:
Zitat:

Zitat von chaosben (Beitrag 1115957)
Gehe ich aber in die Diensteverwaltung kann ich Dienste anhalten/starten ohne das ich die Adminrechte vorher bestätigen muss.
Warum geht das?

Das geht meiner Meinung nach nur dann ohne den Admin-Dialog wenn die UAC entsprechend eingestellt ist. Das ist unabhängig von den Rechten die benötigt werden um Dienste zu starten oder zu stoppen.
Aber ich sehe, dass dir das wahrscheinlich schon klar ist.

Gruß, Chris

musicman56 10. Aug 2011 12:05

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

Zitat:

Wozu bitte solche Hacks?
hmmmmm....Irrtum, das sind keine Hacks! MSDN lesen würde dieses Missverständnis beseitigen.

Zitat:

PS: Ob mit Admin-Manifest oder diesem Namenshack ... es sollte sich überall das UAC melden, also dann lieber gleich das Manifest.
Zweiter Irrtum: Bei der Steuerung von Diensten ist eine Interaktion mit dem User nicht gestattet, und darum kommt in dieser Situation niemals ein UAC-Dialog.

Abgesehen davon: Ich mach es schon jahrelang mit meinem Datenbankdienst so (NexusDB) wie beschrieben, und es funktioniert auf allen OS.

chaosben 10. Aug 2011 12:16

AW: Service starten/stoppen ohne/mit Adminrechten/Elevation
 
@Chris: Wir beide meinten dasselbe (den User), nur hab ich mich unglücklich ausgedrückt. :-D

Ich lese aus eure Posts folgendes: Es geht nicht anders. Man muss den blöden Dialog hinnehmen. (Und daraus resultiert leider auch, das man das Programm nicht debuggen kann)
Ist das die Moral von der Geschichte?

//edit:
Naja ... nee ... da muss es aber doch noch einen Weg geben. Führe ich das Programm auf einem Server2008 als User Administrator aus, geht alles so wie es sein sollte ... ohne Dialog.
Eigentlich müsste ich mir doch die Rechte des Admins über Gruppen holen können ... oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 Uhr.
Seite 2 von 3     12 3      

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