Zum Inhalt springen

C# GUI für WindowsDiensteKonfiguration


Loewchen0507

Empfohlene Beiträge

Hi,

ja ich schon wieder :)

ich habe meinen Dienst geschrieben und es funktioniert doch tatsächlich schon "fast" alles... Was mir noch fehlt und ich auch noch nicht weis wie ich es umsetzen muss ist:

Wie kann ich ein GUI für meinen Dienst bauen über das ich die Konfiguration steuern kann???

Ich habe mir das so vorgestellt:

Währe schön wenn beim starten des Dienstes in der Taskleiste unten Rechts ein Icon zu sehen ist und beim anklicken ein Fenster oder ein Menü aufgeht.

Ich hoffe ich bekomme ein paar Anregungen. Bin für jede gute Idee zu haben.

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

in diesem thread wurde ja schon angesprochen, dass das mit NotifyIcon realisiert werden kann - allerdings müsstest du die entsprechenden beispiele halt mit c# anstelle der implementierung in VB.NET umsetzen; in der MSDN ist hierzu einiges zu finden. mit den entsprechenden methoden kannst du dann den klick auf das traysymbol und in folge auf die menüeinträge abfragen.

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK das habe ich verstanden... aber wie kann ich nun die Konfiguration des Dienstes über die Anwendung steuern???

Ich habe im dienst eine settings1.settings Datei in der ich die Konfigurationen sichere. Weis aber nicht, wie ich die über die andere Applikation ändern kann... Habe irgendwo etwas mit Remoting gelesen... aber komme damit nicht wirklich klar... kann ich mein Problem damit lösen???

Kannst Du mir da helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

hm... nein,

ich habe ja die Klasse des dienstes... und in diesem dienst gibt es eine Datei in visual studio heißen die .settings, dort kann ich soetwas wie die anmeldedaten zum SQL Server sichern... das gute ist, dass das dann eine datei ist, die man nicht einfach so öffnen kann und die passwörter auslesen kann...

ich wollte nun eine application schreiben in der ich die konfigurationen dort ändern kann... weis aber nicht ob und wenn wie ich da ran komme...

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

das gute ist, dass das dann eine datei ist, die man nicht einfach so öffnen kann und die passwörter auslesen kann...

Das ist nicht richtig. Die Settings.settings wird als user.settings unter C:\Dokumente und Einstellungen\[user_name]\Lokale Einstellungen\Anwendungsdaten\ gespeichert und je nach angemeldeten Benutzer auch ohne Probleme sichtbar.

ich wollte nun eine application schreiben in der ich die konfigurationen dort ändern kann... weis aber nicht ob und wenn wie ich da ran komme...

Siehe oben genannten Speicherort. Voraussetzung für den Zugriff ist natürlich der entsprechende Benutzeranmeldung.

BTW: Ich frage mich sowieso, wenn du doch einen SQL-Server zur verfügung hast, wieso nutzt Du nicht dessen Infrastruktur für dein Vorhaben? Dann musst Du das Rad auch nicht neu erfinden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

weil der SQL Server zu einem Programm gehört und ich nicht dort rumfurwerken möchte sondern die Grenzen eines Dienstes austesten möchte... So habe ich ein Programm/Dienst, den ich jederzeit erweitern kann und nicht immer erst auf den Server rauf und dort Änderungen machen, die dann Auswirkung auf alle Benutzer haben die den Server benutzen...

und zu der settings datei...

komisch... als ich damit angefangen hatte und mit dem gucken hatte ich die settingsdatei geöffnet und ich konnte nur hyroglyphen sehen, aber wer weis womit windows die geöffnet hat... also gut sorry... da habe ich mich vertan... :hells:

und um auf das eigentlich zurückzukommen... d.h. solange ich der benutzer bin für den der dienst installiert ist kann ich die datei öffnen und gegebenenfalls Änderungen dran vornehmen... gibt es in .NET dann noch spezielle Möglichkeiten XML dateien auszulesen oder mache ich das genauso wie bei Textdateien??? Und sind die Änderungen sofort aktiv? Oder werden diese erst Aktiv wenn ich den deinst gstoppt und wieder gestartet habe??? Bzw. kann ich OnContinue vom Dienst von meiner Application aus aufrufen und dort die Einstellungen neu einlesen???

Sorry falls ich nerve, aber nur wer fragt lernt dazu... ;)

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

weil der SQL Server zu einem Programm gehört und ich nicht dort rumfurwerken möchte sondern die Grenzen eines Dienstes austesten möchte... So habe ich ein Programm/Dienst, den ich jederzeit erweitern kann und nicht immer erst auf den Server rauf und dort Änderungen machen, die dann Auswirkung auf alle Benutzer haben die den Server benutzen...

darüber - über die sinnhaftigkeit, eine SQL Server instanz, die ohnehin genutzt wird, aussen vor zu lassen - könnte man jetzt noch ausführlich diskutieren, als dass auch ich glaube, dass du hier eine zu umständliche lösung gewählt hast. wenn du das aber über den dienst machen willst, ist das halt so.

und zu der settings datei...

komisch... als ich damit angefangen hatte und mit dem gucken hatte ich die settingsdatei geöffnet und ich konnte nur hyroglyphen sehen, aber wer weis womit windows die geöffnet hat... also gut sorry... da habe ich mich vertan... :hells:

ich weiss leider noch nicht genau, auf was du hinauswillst ... deine .settings ist unlesbar? hast du diese jetzt mit dem projekttyp "windowsapplication" oder "windowsservice" erstellt?

und um auf das eigentlich zurückzukommen... d.h. solange ich der benutzer bin für den der dienst installiert ist kann ich die datei öffnen und gegebenenfalls Änderungen dran vornehmen...

nicht ganz. um es genauer auszudrücken, wenn du der benutzer bist, der ausreichend rechte (die verliehen oder genommen werden können) bist.

gibt es in .NET dann noch spezielle Möglichkeiten XML dateien auszulesen oder mache ich das genauso wie bei Textdateien???

ja. gerade .NET bietet hervorragende, exzellente unterstützung für XML. der verweis auf die erschöpfend umfangreiche dokumentation sei hiermit gegeben.

Und sind die Änderungen sofort aktiv? Oder werden diese erst Aktiv wenn ich den deinst gstoppt und wieder gestartet habe???

wenn du den dienst direkt, z.b. über den ServiceController manipulierst, werden diese einstellungen unmittelbar angewendet. wenn du eine konfigurationsdatei für deine dienstanwendung verwendest, kann diese natürlich die einstellungen nur dann übernehmen, wenn auch die datei neu eingelesen wurde - zumindest wenn ich dich jetzt recht verstanden habe.

Bzw. kann ich OnContinue vom Dienst von meiner Application aus aufrufen und dort die Einstellungen neu einlesen???

ich verstehe den gewünschten effekt dahinter leider noch immer nicht - wenn der dienst aus dem status Pause zurückkehrt, sollen welche einstellungen verwendet werden?

s'Amstel

Link zu diesem Kommentar
Auf anderen Seiten teilen

weil der SQL Server zu einem Programm gehört und ich nicht dort rumfurwerken

Ist ein Argument. War nur ein Vorschlag, ohne die genaue Gegebenheiten zu wissen. ;)

und um auf das eigentlich zurückzukommen... d.h. solange ich der benutzer bin für den der dienst installiert ist kann ich die datei öffnen und gegebenenfalls Änderungen dran vornehmen...

So ist es. Sobald der Dienst jedoch unter einem anderen Account läuft, sind die Einstellungen nicht mehr vorhanden, da eine neue .settings-Datei für das Benutzerkonto erstellt wird.

gibt es in .NET dann noch spezielle Möglichkeiten XML dateien auszulesen oder mache ich das genauso wie bei Textdateien???

Es gibt mehrere Objektmodelle in .NET für Xml-Operationen. Ich persönlich benutze das Modell aus dem Namespace System.Xml.

Und sind die Änderungen sofort aktiv? Oder werden diese erst Aktiv wenn ich den deinst gstoppt und wieder gestartet habe??? Bzw. kann ich OnContinue vom Dienst von meiner Application aus aufrufen und dort die Einstellungen neu einlesen???

Die Änderungen aus der .settings-Datei müssen natürlich neu gelesen werden. Von den Änderugen weiss die Applikation natürlich noch nichts. Wie Du das machst, das ist eine andere Frage. Ob in OnContinue oder woanders - das musst Du einfach ausprobieren.

Sorry falls ich nerve, aber nur wer fragt lernt dazu... ;)

Kein Problem. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

...über die sinnhaftigkeit, eine SQL Server instanz, die ohnehin genutzt wird, aussen vor zu lassen...

Ich glaube darum geht's Löwchen auch nicht. Soweit ich verstanden habe möchte er nur nicht in das bestehende System eingreifen, um mögliche, nicht absehbare, Risiken ausschliessen zu können. Frei nach dem Motto "Change never a running system". Ist aus meiner Sicht verständlich. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK Reden wir mal ganz kurz Klartext...

Also Falls euch WinLine und Cobra etwas sagen und ihr diese kennt dann wüßtet ihr bescheid... ich habe schon meine Gründe... ;) aber dennoch danke für Eure Hilfe, ich denke damit komme ich jetzt ein ganzes Stück weiter... Die XML sachen habe ich gestern abend zufälligerweise in einem buch gelesen (vielleicht sollte ich doch öfter mal in meine bücher gucken, steht mehr drin als gedacht)...

Ich habe es geschafft die XML Datei zu ändern und das ganze sieht auch schon recht passabel aus... Ich werde hier spätestens am Wochenende meine vorgehensweise Posten... Falls nochmal jemand soetwas gebrauchen könnte... (auch wenn es alternative und bessere Lösungen gibt ;) )

Die Kritik nehme ich mir gerne zu herzen und werde sie sicherlich bei späteren Umsetzungen mit bedenken, aber manchmal muss man Umwege gehen um zum Ziel zu gelangen da der naheliegendste Weg oft große Gefahren birgt.

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Oh ein Spezi, *freu*

also mir geht es darum einen dienst laufen zu haben, der inständig zwischen der WinLine und Cobra bestimmte Adressdaten abgleicht, falls Änderung in dem einen oder in dem anderen Programm vorgenommen wurde. Die Richtung kann Konfiguriert werden und Cobra kann auch als MDB laufen... leider...

Wie ich das mit dem GUI umsetze weiß ich inzwischen schon. Momentan ist mein Problem eher die Datenbankverbindung zur Access Datenbank, während das in einer normalen Windows Applikation funktioniert läuft der gleiche Code in als Dienst nicht mehr... *schulterzuck* bin dem ganzen n och nicht auf die Spur gekommen...

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi an alle,

Also die Sache mit dem GUI werde ich wie folgt lösen:

Ich schreibe ein extra Projekt welches die XML Datei editiert. Das ist das einfachste und schnellste und funktioniert sogar.

Sobald ich mit dem Dienst fertig bin werde ich etwas zusammenschreiben. Eine Art Leitfaden für das erstellen von Diensten und einer entsprechenden KonfigurationsApplication. Vielleicht hilft das hier jemandem weiter.

LG Loewchen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...