web-dev-qa-db-ja.com

Windowsサービスからメッセージボックスを表示する

Windowsサービスからメッセージボックス(または任意の形式の通知)を表示できますか?動作しません。私が使用した:

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

しかし、機能せず、エラーが発生しました。

20
Jonn

いいえ、サービスからメッセージボックスを表示することはできません。エラーを報告する場合、これを行う標準的な方法は event log を使用することです。

より高度な種類のUI(エラー報告だけではない)の場合、これは通常、ユーザーのスタートアップフォルダー(またはレジストリのRunキー)に配置し、サービスと通信する通常のWindowsアプリケーションを介して行われますある種のIPCメカニズム(.NETリモート処理、WCF、通常のソケット、名前付きパイプなど)を介して)。

22
Dean Harding

あなたはcan " WTSSendMessage (...)"関数(Windows VistaおよびWindows Server 2008)、ここに良い記事があります: http://msdn.Microsoft.com/en-us/library/ms683502(VS.85).aspx

17
Mike

Wikipedia から:

通常、サービスにはユーザーインターフェイスがありませんが、開発者はフォームやその他のUIコンポーネントを追加できます。この場合、[サービスがデスクトップと対話できるようにする]は、[サービスのプロパティ]ダイアログの[ログオン]タブでチェックする必要があります(ただし、この方法では、ログインしているユーザーがサービスとやり取りできるため、セキュリティリスクが発生する可能性があります。

このオプションを有効にすると、サービスからメッセージボックスを表示できるようになります。

0
Gart

サービスがデスクトップと対話することを許可すると、Services.mscコンソールからこれを行うのに役立ちます。

しかし、これは非常に悪い考えです。特にこのメッセージボックスを後で削除するのを忘れた場合はなおさらです。誰もクリックできないメッセージボックスがあるため、サービスがハングします。

0
Rahul Soni