2011-07-19 10 views
3

私はWindowsサービスを作成しようとしています。イベントログに書き込めるようにする必要があります。私は私のサービスプロジェクトにEventLogコンポーネントを追加し、ccs_wscln(サービスと同じ名前)であることをccs_wscln_logSource財産であることをLogプロパティを設定しました。なぜ私のイベントログソースは<log>の代わりにレジストリに "Application"の下に置かれ続けますか?

私はこのプロジェクトの作成とインストーラも作成しました。私の問題は、サービスをインストールする度に HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\ApplicationHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\ccs_wscln_logのときにccs_wsclnレジストリキーを作成することです。
これに伴う問題は、私は、サービスを起動しようとすると、私は

は「ソース 『ccs_wsclnが』ログ 『ccs_wscln_log』に登録されていないと言うエラーが出るということです。(それは、ログ 『アプリケーション』に登録されています)ソースとログのプロパティが一致する必要があります。または、Logを空の文字列に設定すると、自動的にソースプロパティに一致します。

ccs_wsclnレジストリキーを削除すると私はアプリケーションをインストールすると、アプリケーションの下に自動的に私のためのエントリを作成していると私はそれを防ぐにはどうすればいいですか?これをする? 私は、アプリケーションの下に前にそれをインストールした場合はコンピュータを再起動する必要があると述べSO上の他の記事を見つけたので、私はそれを試してみましたが、私は解決策を再読み込みするとき、それはあったので、私もデザイナーを育てることができませんでしたレジストリエントリが見つからなかったと訴え、それでもアプリケーションの下にインストールされます。

答えて

1

私はC#を使用して、最初からWindowsサービスを作成するためのチュートリアルを作成しました。私はアプリケーション固有のログに書き込む問題に取り組んでいます。詳細はステップ9 hereを参照してください。

+0

サービスクラスに同じソース/ログ名を持つEventLogコンポーネントが既にある場合はどうなりますか?私は数分前と似たようなことを試しました。インストールしようとしたときに、ソースが既に存在するというメッセージが表示されました。おそらく私は再びコンピュータを再起動する必要があります – alexD

0

私はあなたのServiceInstallerクラスで次のようにする必要があると思います。

this.Installers.Clear(); 

上記のコードは、インストーラの範囲を追加する直前である必要があります。

これは、デフォルトでEventLogInstallerが追加されたためです。クリアを呼び出すと削除されます。 また、インストーラーコレクションをループし、特定のタイプ(EventLogInstaller)を選択し、必要なLogNameおよびEventSource名を割り当てることができます。

関連する問題