Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Vista - Dienst starten (https://www.delphipraxis.net/111427-vista-dienst-starten.html)

hirnstroem 3. Apr 2008 10:28


Vista - Dienst starten
 
'loha Folks,

eine Applikation wurde als Dienst unter Windows Vista installiert. Dieser Dienst soll nun gestartet werden. Geschieht dies über "Dienste" in der Systemsteuerung, so startet der Dienst anstandslos, wird er über das Kommandozeilenprogramm (cmd.exe) gestartet, so heisst es stets, Systemfehler 5 sei aufgetreten und der Zugriff wird verweigert.

In beiden Fällen wurde mit demselben Benutzer, welcher Administratorenrechte hat, gearbeitet.

Aussagen weshalb dies geschieht oder wie man es verhindern kann, nehme ich gerne entgegen.


Grüsse
hirnstroem

Bernhard Geyer 3. Apr 2008 10:31

Re: Vista - Dienst starten
 
Ich vermute mal das du UAC noch aktiv hast, un da mußt Du die Kommandozeile auch mit Administratorrechten starten.

hirnstroem 3. Apr 2008 10:39

Re: Vista - Dienst starten
 
Dies (Kommandozeile auch mit Administratorrechten starten) geschieht also nicht automatisch, wenn ein Benutzer mit entsprechenden Rechten das Kommandozeilenprogrämmlein startet?

Es ist so, dass die Applikation prüfen soll ob ein bestimmter Dienst bereits läuft, wenn nicht, diesen startet und am Ende in jedem Fall eine bestimmte URL aufruft. Das starten des Dienstes und das aufrufen der URL wird über die ShellExecute Methode realisiert.

Bernhard Geyer 3. Apr 2008 10:41

Re: Vista - Dienst starten
 
Zitat:

Zitat von hirnstroem
Dies (Kommandozeile auch mit Administratorrechten starten) geschieht also nicht automatisch, wenn ein Benutzer mit entsprechenden Rechten das Kommandozeilenprogrämmlein startet?

Jeder neue Prozess wird ohne Adminrechte gestartet außer im Manifest steht etwas anderes oder Windows erkennt aufgrund von Dateiinformationen und Name das der Prozess Adminrechte benötigt (wenn das Manifest nicht die Vista-Erweiterungen beinhaltet).

hirnstroem 3. Apr 2008 10:45

Re: Vista - Dienst starten
 
Ja so ist das. Bei mir läuft dieses Vista erst seit zwei Tagen, ich bitte deshalb um Nachsicht : )

Dann werde ich jetzt versuchen die Kommandozeile sich mit entsprechenden Rechten starten zu lassen. Die Applikation welche die ShellExecute Methode ausführt, wurde bereits mit einem Manifest (requireAdministrator) ausgestattet, das genügt nun ja aber nicht, wenn ich das richtig verstehe.

Bernhard Geyer 3. Apr 2008 10:58

Re: Vista - Dienst starten
 
Zitat:

Zitat von hirnstroem
Die Applikation welche die ShellExecute Methode ausführt, wurde bereits mit einem Manifest (requireAdministrator) ausgestattet

Wenn du willst das deine Adminrechte vererbt werden nimm CreateProcess. Bei ShellExecute wird die Shell beauftragt den Prozess zu starten und diese wird den Prozess dann wieder ohne Adminrechte starten (außer du gestartete Exe hat wieder entsprechendes Manifest).

gmc616 3. Apr 2008 14:36

Re: Vista - Dienst starten
 
[OT]
Ich häng mich hier einfach mal rein.

Zitat:

Zitat von Bernhard Geyer
... oder Windows erkennt aufgrund von Dateiinformationen und Name das der Prozess Adminrechte benötigt ...

Welche Informationen bzw. Namen könnten das beispielsweise sein?
Gibts da was zum nachlesen?

Zu CreateProcess: Gibt es da nicht auch irgendwelche Einschränkungen. Ich glaube da mal was vor geraumer Zeit gehört zu haben.
Da gings um Viren und die Verhinderung dass diese API-Funktion so einfach gerufen werden könne. Oder irre ich mich da?
Als Alternative zu CreateProcess hat man (damals) SendKeys an das Startmenü->Ausführen geschickt ...

Könnt ihr was dazu sagen?

[/OT]

Bernhard Geyer 3. Apr 2008 15:00

Re: Vista - Dienst starten
 
Zitat:

Zitat von gmc616
Welche Informationen bzw. Namen könnten das beispielsweise sein?

Dateiname beinhaltet setup/install oder update im Namen oder in den Dateiinformationen.

Zitat:

Zitat von gmc616
Gibts da was zum nachlesen?

Sicherlich. Weiß aber nicht mehr wo. Einfach mal googeln oder jemand hat solche Links noch parad.

Zitat:

Zitat von gmc616
Ich glaube da mal was vor geraumer Zeit gehört zu haben.
Da gings um Viren und die Verhinderung dass diese API-Funktion so einfach gerufen werden könne. Oder irre ich mich da?

Sicherlich gibt es immer mal übereifige Virenscanner.

Zitat:

Zitat von gmc616
Als Alternative zu CreateProcess hat man (damals) SendKeys an das Startmenü->Ausführen geschickt ...

Und das soll sicherer sein? Wenn zu viele mißbrauchen würden, wird MS da auch per UAC oder anderen Mechanismen was dazwischenbasteln.

gmc616 3. Apr 2008 15:23

Re: Vista - Dienst starten
 
Ah, Danke für die Infos.

Zitat:

Zitat von Bernhard Geyer
Und das soll sicherer sein?

Nein. Eben nicht.
In dem Video ging es um die Sinnlosigkeit von Personal Firewalls. Dort hat der CCC verschiedene Firewalls und Virenscanner getested und festgestellt, dass ALLE einen Rechner nur ungenügend sicher machen können.

Kann durchaus sein, das da auch erwähnt wurde, das ein Virenscanner CreateProcess "blockieren" könne. Ich weiß es nicht mehr genau, is schon ne ganze Weile her als ich das gesehen hab.

Wie auch immer.
Mit SendKeys hat der Referent nur gezeigt, das es trotz Blockierens von CreateProcess, möglich ist, ein Fremdprogramm ohne Zutun des Benutzers auf einem Rechner zu starten und auszuführen. Alles aus dem Blickwinkel eines Virenprogrammieres.

hirnstroem 4. Apr 2008 07:24

Re: Vista - Dienst starten
 
Wollte mich noch bei Herrn Geyer für den Tipp mit CreateProcess bedanken, nun funktioniert die alles wie gewünscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 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