Laden...

Dienst überprüfen, eintragen und starten

Erstellt von garv3 vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.274 Views
G
garv3 Themenstarter:in
70 Beiträge seit 2009
vor 11 Jahren
Dienst überprüfen, eintragen und starten

Hallo zusammen,

ich möchte folgendes realisieren:
Wenn meine Windows Forms Anwendung gestartet wird, soll überprüft werden, ob ein bestimmter Dienst läuft. Ist dies nicht der Fall, soll er ggf. registriert, auf Autostart gesetzt und gestartet werden.
Doch wie mache ich das. Die .exe, welche den Dienst darstellt, ist im Projekt eingebunden. Aber wie gleife ich nun auf die Dienste des Systems zu?
Vermutlich benötige ich ja sogar Admin-Rechte!? Falls ja: Gibt es eine möglichkeit, die Abfrage der Berechtigung beim Start der Anwendung automatisch auszuführen, so dass dies nicht vom Benutzer manuell (per rechte Maustaste o.ä.) getan werden muss?

Wäre wirklich super, wenn mir jemand bezüglich der Dienste auf die Sprünge helfen kann.

Gruß
garv3

U
189 Beiträge seit 2011
vor 11 Jahren

Also du kannst .NET Dienste über die Exe InstallUtil.exe registrieren. (Install / Uninstall .NET Windows Service [C#])
Soviel ich weiß braucht man dafür Admin-Rechte aber es gibt haufenweise Snippets, damit dieses Dialogfeld kommt, um Adminrechte zu erlangen. (C# Code Snippets: Vista UAC elevation oder Adminrechte anfordern)
Wie man auf die Windows Services zugreift, wirst du nach einer kleinen Recherche bestimmt finden.

UZI

G
garv3 Themenstarter:in
70 Beiträge seit 2009
vor 11 Jahren

Die InstallUtil.exe will mir da irgendwie nicht helfen. Es öffnet sich zwar kurz eine Eingabeaufforderung, schließt sich aber blitzschnell wieder, so dass ich nicht sehen kann, ob ein Fehler ausgegeben wird. Die anderen Beiträge zur Installation eines Services hinter deinem Link helfen auch nicht wirklich. Jedenfalls startet der Dienst nicht.
Außerdem möchte ich den Dienst im Hintergrund installieren. Eine aufpoppende Eingabeaufforderung kann ja nicht das Wahre sein...

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo garv3,

Es öffnet sich zwar kurz eine Eingabeaufforderung, schließt sich aber blitzschnell wieder, ...

und was tut man da standardmäßig? Selber eine Eingabeaufforderung öffnen und dann darin das Programm aufrufen (ggf. vorher noch in das richtige Verzeichnis wechseln).

herbivore

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo garv3,

Außerdem möchte ich den Dienst im Hintergrund installieren. Eine aufpoppende Eingabeaufforderung kann ja nicht das Wahre sein...

Schau dir dazu die Process-Klasse an.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

U
189 Beiträge seit 2011
vor 11 Jahren

Wie schon herbivore gesagt hat und sich auch aus dem Link schlussfolgern lässt, musst du natürlich selbst mit cmd zu diesem Pfad gehen und dann folgendes eintippen:
InstallUtil.exe "<Pfad deines Dienstes>"
Wenn du mit C# ein Konsolenprogramm machst, schließt es sich ja auch gleich wieder.
Diese Exe macht nur das, wenn du ihr Argumente übergibst, die angeben was sie tun soll.