Konfigurieren eines eigen programmierten Windows Dienstes

03/03/2009 - 08:22 von Michael | Report spam
Hallo

Ich möchte einen Windows Dienst erstellen, der folgende Eigenschaften besitzt:
- Im System Tray soll ein Icon mit dem aktuellen Status angezeigt werden
- Der Benutzer soll den Dienst starten, stoppen, etc. können (z.B. über
Notifyicon)
- Der Dienst benötigt diverse Einstellungen (z.B. Connectionstrings,
Hostadressen, Timerintervall, etc.), welche ich nicht hardcodieren möchte und
der Benutzer auch veràndern können soll

Ich stelle mir neben dem Dienst eine WinForm Anwendung vor, um die oben
beschriebenen Eigenschaften zu realisieren. Die ersten beiden Punkte sollten
sich problemlos mit der Klasse ServiceController realiseren lassen. Da
ServiceController kein Ereignis StateChanged besitzt, komme ich am Pollen des
Status wohl nicht vorbei...

Bezüglich den Einstellungen habe ich mehr Schwierigkeiten! Grundsàtzlich
stellt sich die Frage, wo sollen die Einstellungen abgespeichert werden?
- Config? (Problematisch, da anwendungsspezifisch?)
- DB?
- File? (Wertepaar alla ini-File)
Wie macht man das?

Da es sich auch um ConnectionStrings handelt ist ggf. auch die
Verschlüsselung ein Thema?

Besten Dank für Tipps!
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
03/03/2009 - 10:06 | Warnen spam
Hallo Michael,

- Im System Tray soll ein Icon mit dem aktuellen Status angezeigt werden
- Der Benutzer soll den Dienst starten, stoppen, etc.
können (z.B. über Notifyicon)



oh oh, das ist alles keine gute Idee. Dienste
sind schon von der Sicherheitsebene her
nicht von "Benutzern" zu stoppen und zu
starten...

Ich empfehle, darüber nachzudenken, ob Du nicht
die ganze Applikation in einer (unvisble) Windows-
Applikation implementierst. Ggf. auch von
ApplicationContext abgeleitete Form. Auch die Frage
nach der Konfiguration erledigt sich automatisch:

[WindowsClient.net]
http://windowsclient.net/articles/n...tions.aspx

[Lightweight System Tray Application (NotifyIcon Based)]
http://www.mitchelsellers.com/blogs...id/13.aspx

[NotifyIcon-Klasse (System.Windows.Forms)]
http://msdn.microsoft.com/de-de/lib...yicon.aspx
_____________

Wenn Du wirklich auf Dienst bestehen würdest,
solltest Du 1) eine Dienstanwendung und 2)
eine eine WindowsFormsanwendung erstellen.
Die Interaktion kann zum Beispiel über WCF laufen,
denn direkt ist es nicht immer möglich/zulàssig:

[Interactive Services (Windows)]
http://msdn.microsoft.com/en-us/lib...83502.aspx

[Impact of Session 0 Isolation on Services and Drivers in Windows Vista]
http://www.microsoft.com/whdc/syste...vices.mspx

[Security, services and the interactive desktop in Windows]
http://support.microsoft.com/kb/327618/en-us

[Einführung in Windows-Dienstanwendungen]
http://msdn.microsoft.com/de-de/lib...de412.aspx


ciao Frank
Dipl. Inf. Frank Dzaebel [MCP, MVP C#]
http://Dzaebel.NET

Ähnliche fragen