AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dienst starten mit Delphi

Ein Thema von krac · begonnen am 17. Nov 2016 · letzter Beitrag vom 23. Nov 2016
Antwort Antwort
krac

Registriert seit: 17. Nov 2016
10 Beiträge
 
#1

AW: Dienst starten mit Delphi

  Alt 17. Nov 2016, 13:06
Fehlermeldung : ... 'Systemfehler. Code: 5. Zugriff verweigert' aufgetreten

Wenn ich das Programm aber einfach mit Rechtsklick 'Als Admin ausführen' starte funktioniert es.

Noch hab ich nichts gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dienst starten mit Delphi

  Alt 17. Nov 2016, 15:29
Aus diesem Grunde sollte man eben auch die Rückgabewerte ordentlich auswerten, denn die sagen einem oft, woran es hängt.
Hier also an den fehlenden Rechten.

Und ja, genau darum geht das dann, denn dann hat dein Programm die nötigen Rechte, um diesen Befehl ausführen zu dürfen.
Entweder dein Programm hat von Anfang an die nötigen Rechte, oder man besurgt sie sich zur Laufzeit und gibt das zugehörige Token da rain, wo du nil übergist.
[edit] Nee, diese APIs haben zufällig mal keinen Parameter für einen SECURITY_DESCRIPTOR. (es gibt nur die Möglichkeit die Rechte für den laufenden Service festzulegen)
Also bliebe nur noch die Möglichkeit die Rechte des Threads für diesen Aufruf anzupassen, wenn das Programm nicht schon mit ausreichenden Rechten gestartet wurde.


PS: Aus diesem Grunde hatte ich in meiner Unit das auch nochmal für den Entwickler kenntlich gemacht.
Leider steht im MSDN nicht welches Privilege/Recht nun genau benötigt wird.
Delphi-Quellcode:
type
  [API('AdvAPI32.dll'), Source('winsvc.h')]
  ServiceControl = class abstract
    [UserAdmin, API('AdvAPI32.dll', 'StartService')] // <<<<<<<<<<<<<< ADMIN <<<<<<<<<<<<<<<<<<
    procedure Start(const ServiceName: string; const Parameters: array of string); overload;
    procedure Start(const ServiceName: string); overload;

    ...
  emd;
http://www.delphipraxis.net/190362-d...ml#post1349417
Also ich würde mir da die Fehlerbehandlung mal abgucken.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (18. Nov 2016 um 01:27 Uhr)
  Mit Zitat antworten Zitat
krac

Registriert seit: 17. Nov 2016
10 Beiträge
 
#3

AW: Dienst starten mit Delphi

  Alt 23. Nov 2016, 12:11
So
tschuldigung für die späte antwort, jedoch konnte ich vorher nicht.

ich hab es so erstellt, dass ich es im Aufgabenplaner anlege. dort lege ich den user als admin fest. und der dienst kann gestartet werden.
  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 04:42 Uhr.
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