Windows-Dienst funktioniert nicht

8

Ich hatte einen Windows-Dienst im Visual Studio 2008 in C # gemacht. Innerhalb des Dienstes hatte ich nur einen einzigen Zeilencode geschrieben

%Vor%

Dann füge ich das Projekt Installer & amp; Ändern Sie die Eigenschaft serviceProcessInstaller1 Account als lokales System. Ändern Sie außerdem die Eigenschaft startInstallator1 start type als Automatic. Dann baue ich das Projekt. Es war erfolgreich. Danach füge ich ein anderes Projekt hinzu, das das Projekt eingerichtet hatte. Ich hatte die primäre Projektausgabe & amp; Ich hatte die benutzerdefinierte Aktion als "Primäre Ausgabe von DemoWindowsService (Active)" hinzugefügt. Dann baute die Setup.Setup wurde erfolgreich erstellt. Dann installiere ich das Setup & amp; dann ging zu den services der service.service ordnungsgemäß angegeben aber es war nicht die aufgabe. Ich hatte überprüft, der Pfad ist korrekt & amp; Ich habe es auch versucht

System.Diagnostics.Process.Start(@"E:\Windows\system32\notepad.exe") , aber das Ergebnis ist immer noch dasselbe.Ich habe viel versucht, aber keine Antwort bekommen.

    
PrateekSaluja 05.04.2010, 07:40
quelle

3 Antworten

2

Wenn es nicht funktioniert, liegt es vielleicht daran, dass eine Ausnahme ausgelöst wurde. Da Sie jedoch alle Ausnahmen mit Ihrem try / catch-Block ausblenden, wissen Sie nie, was falsch ist.

Entfernen Sie den try / catch-Block und sehen Sie, ob Sie dadurch lernen, was falsch ist.

    
John Saunders 05.04.2010, 07:52
quelle
6

Windows-Dienste können standardmäßig nicht mit dem Desktop interagieren, und Notepad ist eine interaktive Anwendung.

Wenn Sie den Task-Manager öffnen, vermute ich, dass der notepad.exe -Prozess nach dem Start Ihres Dienstes ausgeführt wird und dass Ihr Dienst das tut, was Sie denken, er ist einfach nicht sichtbar.

Sie können einen Dienst für die Interaktion mit dem Desktop ändern, indem Sie im MMC-Snap-In Dienste ( Start -> Run -> Services.msc ) mit der rechten Maustaste darauf klicken und die Option Dienst mit dem Desktop interagieren aktivieren auf der Registerkarte Log On .

Wenn Sie sich auf diese Option verlassen, wird nicht empfohlen, da Microsoft gesagt hat, sie würden es in späteren Windows-Versionen entfernen.

Es macht Sinn, wenn Sie darüber nachdenken, da ein Windows-Dienst auch dann benutzbar sein soll, wenn niemand am Computer angemeldet ist (z. B. gibt es keinen "Desktop" für die Interaktion).

    
Leon Breedt 05.04.2010 07:49
quelle
0

Haben Sie Ihre einzelne Codezeile in der OnStart () -Methode im Service geschrieben? Wenn Sie dies getan haben, ändern Sie Ihren catch-Block in catch (Exception ex) und schreiben Sie die Ausnahmedetails in das Ereignisprotokoll, um zu sehen, warum die Ausnahmebedingung aufgetreten ist.

Siehe Informationen über Dienste protokollieren

    
Riaan 05.04.2010 07:55
quelle

Tags und Links