4

OnStart() および OnStop() メソッドで可能な限り多くのログを記録するサービスの診断バージョンがあります。

キャプチャできないイベントの 1 つは、コンピューターが物理的に再起動されたときです。私のロギング機能は通常、その出力をデータベース内のテーブルに記録しますが、それが利用できない場合は EventLog にポストします。

再起動すると、サービスはテーブルにも EventLog にもログを記録しません。

SQL Server がシャットダウン中であるため、テーブルに投稿できないことは理にかなっていますが、タイミングの問題により、サービスがデフォルトになる前に EventLog もシャットダウンする可能性があるようです。そこに書いてください。

シャットダウンの場合、MSSQLSERVER は EventLog に情報メッセージを報告します。

システムのシャットダウンのため、SQL Server が終了しています。これは単なる通知メッセージです。ユーザーの操作は必要ありません。

私のサービスに似たようなことをする方法はありますか?

4

4 に答える 4

3

サービスでオーバーライドできる OnShutdown メソッドがあります。マシンのシャットダウン時に呼び出されます。そのメソッドからイベント ログに書き込み、base.OnShutdown() を呼び出します。

于 2010-02-24T18:13:06.297 に答える
3

Windows サービスの依存関係を指定して、別のサービスが必要になるようにすることができます。EventLog サービスへの依存関係を指定すると、Windows はサービスがシャットダウンされるまで待機してから、イベント ログをシャットダウンします。

http://kb2.adobe.com/cps/400/kb400960.htmlでは、いくつかのレジストリ キーを変更する方法について説明しています。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services に移動し、依存関係を設定する必要があるサービスを見つけます。右側の「DependOnService」キーを開きます。選択したサービスに 'DependOnService' キーがない場合は、右クリックして [新規] > [複数文字列値] を選択して作成します。値フィールドに、現在のサービスが依存するすべてのサービスの名前を入力します。各サービス名は、適切に、別の行に入力する必要があります。

于 2010-02-24T18:14:00.897 に答える
0

SystemEvents.SessionEnding のキャプチャ

OnStart では、それをキャプチャして処理できます

お気に入り

Microsoft.Win32.SystemEvents.SessionEnding += new Microsoft.Win32.SessionEndingEventHandler(this.zomgRebootinglol);
于 2010-02-24T18:14:43.947 に答える
0

SystemEvents-Classを使用して Windows イベントをキャプチャできます。

イベントもご覧ください。お探しのイベントは次のとおりだと思います: SystemEvents::PowerModeChanged Eventおよび/またはSystemEvents::SessionEnded

于 2010-02-24T18:15:51.203 に答える