it-swarm.com.de

Ein Meldungsfeld von einem Windows-Dienst anzeigen

Können Sie ein Meldungsfeld (oder eine Benachrichtigung) eines Windows-Dienstes anzeigen? Kann es nicht zur Arbeit bringen. Ich benutzte:

            global::System.Windows.Forms.MessageBox.Show("A fatal error occurred. " +
                ServiceName + " is now terminating.");

aber es hat nicht funktioniert und nur einen Fehler erzeugt.

20
Jonn

Nein, Sie können kein Meldungsfeld von einem Dienst anzeigen. Wenn Sie Fehler melden möchten, können Sie dies standardmäßig mit dem Ereignisprotokoll tun.

Für "erweiterte" Arten der Benutzeroberfläche (nicht nur für die Fehlerberichterstattung) erfolgt dies normalerweise über eine normale Windows-Anwendung, die Sie in den Startordner des Benutzers (oder den Schlüssel "Ausführen" in der Registrierung) ablegen und mit dem Dienst kommunizieren über eine Art IPC-Mechanismus (.NET-Remoting, WCF, reguläre Sockets, Named Pipes usw.).

22
Dean Harding

Sie can zeigen eine Nachricht von einem Dienst mit der Funktion " WTSSendMessage (...)" an (die seit Windows Vista und Windows Server 2008 verfügbar ist). Hier ist ein guter Artikel: http://msdn.Microsoft.com/de-de/library/ms683502(VS.85).aspx

16
Mike

Aus Wikipedia :

Obwohl Services normalerweise keine Benutzeroberfläche haben, können Entwickler Formulare und andere Komponenten der Benutzeroberfläche hinzufügen. In diesem Fall sollte " Erlaube dem Dienst die Interaktion mit dem Desktop " auf der Registerkarte "Anmeldung" im Dialogfeld "Diensteigenschaften" aktiviert werden (dies sollte jedoch mit Vorsicht erfolgen, da dies zu einem Sicherheitsrisiko führen kann, da alle protokolliert werden Benutzer wäre in der Lage, mit dem Dienst zu interagieren).

Wenn diese Option aktiviert ist, sollten Sie in der Lage sein, Meldungsfelder eines Dienstes anzuzeigen.

0
Gart

Wenn Sie zulassen, dass der Dienst mit dem Desktop interagieren kann, können Sie dies über die Services.msc-Konsole tun.

ABER das ist eine sehr schlechte Idee. Insbesondere, wenn Sie vergessen, diese Messagebox später zu entfernen. Der Dienst bleibt hängen, da Sie eine Messagebox haben, auf die niemand klicken kann.

0
Rahul Soni