質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2999閲覧

windowsサービス start_type をautomaticにしたのに自動起動せずに停止状態になっている

mercurian-teto

総合スコア75

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2018/08/10 16:58

編集2018/08/10 17:37

C#で簡単なwindows-serviceを作成しています。
start type :automatic
account :localservice

onstartとonstopに

this.Eventlog.WriteEntry("");

のコードを追加してからインストールして
一度ログアウトしてからイベントビューアーを確認しましたが、
イベントログが追加されていませんでした。

AutoLogkプロパティもtrueになっていたので、イベントログが出力できるはずです。

また、windowsの「サービス」を確認しましたが、
イベントログが出力されていませんでした。
スタートアップの種類は自動になっていましたが、
サービスの状態が停止になっていました。

イベントログが出力されない理由がわからないのですが、だれかご教授してくださいませんか。

!service1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; namespace service_rennsyuu1 { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { this.EventLog.WriteEntry("hello world"); } protected override void OnStop() { this.EventLog.WriteEntry("bye world"); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/08/10 22:55

サービスリストから手動で起動・停止した場合どうなるか確かめてください。他にコードがあるならそれを使わず最小限のコードにして全文を挙げてください。それとイベントログ確認の手順を書いてください。
mercurian-teto

2019/02/25 08:12

ご指摘ありがとうございます。 実際の直し方を記述しました。
guest

回答1

0

自己解決

eventlogが出ない現象について
VisualStudioでwindowsサービスを作成すると、
Program.cs,ProjectInstaller.cs,Service1.csがデフォルトで作成されます。
Service1.csをダブルクリックして、Service1.cs[デザイン]の
デザインビューを開きます。
ツールボックスをvisualstudioのウインドウの左側に表示させます。
ツールボックス->コンポーネント->EventLogを
「コンポーネントをドラッグして・・・」というところに
ドラッグアンドドロップします。
fig1
プロパティのところに
NameとSourceを変更します。
Nameはコード上で使用されるeventlogのインスタンスの名前です。
sourceはイベントログビューアーで識別されるこのプログラムの名前です。
イベントビューアーで見つけられなかったのもsourceを設定してなかったからです。
fig2
次にService1.csを左クリックして「コードの表示」をクリックします。
あとはイベントログを出したいところで宣言するだけです。
OnstartやOnstopにイベントログを出力する宣言をします。

eventlog.WriteEntry("service has started"); //(先ほど設定したName).WriteEntry("************")

インスタンスeventlogは

public LsXmlWriter() { InitializeComponent(); }

のInitializeComponent()の中で定義されています。
(Service1.Designer.csをダブルクリックするとInitializecomponent()の中身を見ることができます。先ほど設定した項目が代入されています。)

質問をしたときはNameを設定しておらずそのまま

{ this.EventLog.WriteEntry("hello world"); }

とかいていました。これがイベントログが出なかった原因です。
以上で回答を終了します。

投稿2019/02/25 08:11

mercurian-teto

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問