Windows Dienst
-
welches Beriebsystem?
-
windof 2000 und xp
kleine frage am rande: wie kann ich nen dinest debuggen?
-
in VS: Menü Debugen/Prozesse...
aus der Prozessenliste dein Dienst auswählen, dann "Anfügen" klicken.
im next'en Fenster beim Programmtyp "Common Language Runtime" anhacken und mit OK bestätigen.das prog muss natürlich in debugmodus erstellt werden.
-
ah, danke.
jetzt fängt er events ab...
jetzt noch ne kleine abschlussfrage:
wenn der dienst installiert ist, kann ich im windows (xp) einstellen, dass der dienst interaktionen mit dem desktop machen kann. kann ich das so einstellen, das das nachm installieren automatisch schon der fall ist? Bei der ServiceBase klasse find ich dazu kein Property... (gibts wahrscheinlich auch ned) geht das auch irgendwie anders?Grüsse,
Jojo
-
sieh dir mal die ServiceType-Eigenschaft von der ServiceController-Klasse an.
-
ah, cool, das habich gebraucht. vielen dank für deine mühe.
Grüsse,
Jojo
-
oh nein, heut is glaub nich mein tag:
ServiceController service = new ServiceController( "ScriptService" ); service.ServiceType = ServiceType.InteractiveProcess;
fehler: (57): Einer Eigenschaft oder einem Indexer 'System.ServiceProcess.ServiceController.ServiceType' kann nicht zugewiesen werden -- sie sind schreibgeschützt
Wieso sind die auf einmal schreibgeschütz? Der Sinn des ServiceControlers liegt doch darin, Dienste zu manipulieren?!
-
Es ist doch auch nicht der ServiceController schreibgeschützt, sondern die Eigenschaft ServiceType. Diese Eigenschaft ist von Haus aus schreibgeschützt.
-
das hab ich ja gemerkt, aber ich wollte ja gerade diese eigenschaft des dienstes ändern...
-
habe gerade bei der Beschreibung von ServiceType-Enumeration rausgelesen:
Die Erstellung interaktiver Dienste wird nicht unterstützt. Um dieses Problem zu umgehen, können Sie einen nicht interaktiven Dienst und eine separat gesteuerte grafische Benutzeroberflächenanwendung erstellen, die mit dem Dienst über Sockets oder Remoting kommuniziert.
Da wird man noch auf die Remoting-Beispielseite verwiesen...
-
wenn du Probleme mit Remoting hast, kann ich dir sicher weiterhelfen
-
Ja, das wär nett, aber ich versuchs erstmal selber.
Jetzt muss ich erstmal zum Fussball spielen, danach wag ich mich da mal ran.
Grüße, Jojo
-
ich hab ma drüber nachgedacht.
mir erscheint das ein bisschen umständlich, dass ich ne seperate benutzeroberfläche bau, die ich dann irgendwie nach der installation automatisch starte, und die dann automatisch den ServiceType des Dienstes ändert ( mit remoting, oder wie auch immer ) und die sich dann selber schließt.
ich versteh ned, dass wenn es schon eine klasse ServiceController gibt, wieso die dann nich direkt den Service manipulieren kann.
-
was hast du eigentlich vor.
-
ich will einfach nur nen dienst installieren, der datenaustausch mit dem desktop zulässt, ohne dass man nach der installation extra umständlich den dienst anklicken und auf eigenschaften gehen muss und dort diese einstellung zu ändern...
-
hm, ich bin mir ncoh nicht im klaren darüber, was du eigentlich vorhast. Was ist die eigentliche Aufgabe. ICh glaube, dass du dich an ein Problem festkeilst.
-
Ok, ich erklär mal die komplette Sachlage:
Ich hab nen PC-Pool in ner Schule, mit 20 - 40 Rechnern.
Ich hab nen Programm, mit dem ich auf allen Rechnern gleichzeitig etwas installieren kann. Ich hab einen Windows Dienst (der als System angemeldet ist, weil er in der Registry was ändern soll). Leider geht das manipulieren der Registry nur, wenn der ServiceType des Dienstes interaktiv ist. Jetzt will ich aber nicht nach der installation an jeden der 20 - 40 Rechner rennen, und die Eigenschaft "Datenaustausch mit Desktop zulassen" des Dienstes manuell auf true setzen. Deswegen versuch ich gerade krampfhaft dass dies automatisch nach der installation funktioniert...
-
ach, jetzt hat es klick gemacht
Beschissene Situation.
http://www.dotnet247.com/247reference/msgs/36/184247.aspx
da unten ist ein Lösungsvorschlag. Hattest du den mal ausprobiert ?
-
Geil, das war genau das richtige.
Man musste nur nen Wert in der Registy ändern, und schon hatte man einen "interaktiven" Dienst.Vielen Dank für deine Hilfe.
Grüsse,
Jojo
-
Jetzt bin ich wirklich langsam am verzweifeln:
Ich habs genauso gemacht:
http://www.codeproject.com/csharp/CsWindowsServiceDesktop.aspUnd wenn ich mir meinen Dienst in Dienste anschau, dann seh ich, das das Feld:
"Datenaustauch mim Desktop zulassen" true, also angeklickt ist. ( so wies sein soll )
Mein Dinest verhält sich aber so, wie wenn das Feld false wäre.
Wenn ich jetzt dann einnmal das Feld ausklicke und dann wieder an, dann gehts, so wie es sich gehört...*ratlos*
Edited: Oh nee, ich war ma wieder zu voreilig, geht alles bestens, hald nach nem reboot... sorry.