C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.101905 の関連記事表示

<< 0 >>
■101905  Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/12(Fri) 15:24:48)

    分類:[.NET 全般] 

    下記の環境でWindowsサービスを作りました。
     VisualStudio2022
     C#
     .NETFrameWork4.8

    デバックビルドをしてできたexeを下記コマンドでサービスに登録しました。
     C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe C:\test\sss\WindowsService1.exe
    サービスの開始でログ出力されることを確認。
    サービスの停止でログ出力されることを確認。

    PCをシャットダウンし、
    PCの電源を入れれば、ログオンせずともサービスが起動されると期待していたのですが
    どうやらサービスが自動的に起動していないようです。
    そのままログインし、サービスの状態を見ると
    サービスは停止の状態になっていました。

    シャットダウン状態から自動起動するためにはどうしたら良いでしょうか?
    アドバイスを頂きたいです。

    serviceProcessInstaller1のプロパティであるAccountは、LocalServiceに設定しました。
    serviceInstaller1のプロパティであるStartTypeは、Automaticに設定しました。
    その他はデフォルトになっています。

    public partial class Service1 : ServiceBase
    {
    private readonly Timer _WatchTimer = new Timer();

    public Service1()
    {
    InitializeComponent();

    _WatchTimer.Elapsed += new ElapsedEventHandler(OnTimer);
    _WatchTimer.Enabled = false;
    _WatchTimer.AutoReset = true;
    _WatchTimer.Interval = 1000;
    _WatchTimer.Enabled = true;
    _WatchTimer.Stop();
    }

    protected override void OnStart(string[] args)
    {
    LogWrite("OnStart");
    _WatchTimer.Start();
    }

    protected override void OnStop()
    {
    LogWrite("OnStop");
    _WatchTimer.Stop();
    }

    protected void OnTimer(object sender, EventArgs e)
    {
    LogWrite("OnTimer");
    }

    private void LogWrite(string message)
    {
    using (StreamWriter streamWriter = new StreamWriter("C:\\test\\A.txt", true))
    {
    streamWriter.WriteLine($"{DateTime.Now} - {message}");
    }
    }
    }
親記事 /過去ログ178より / 関連記事表示
削除チェック/

■101910  Re[1]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ 魔界の仮面弁士 -(2023/05/12(Fri) 15:50:16)
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101913  Re[2]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/12(Fri) 16:44:23)
    No101910 (魔界の仮面弁士 さん) に返信
    > 2023/05/12(Fri) 15:52:17 編集(投稿者)
    >
    > ■No101905 (kiku さん) に返信
    >>どうやらサービスが自動的に起動していないようです。
    >
    > ServiceInstaller の StartType プロパティを Automatic にしているかと、

    Automaticになっていました。

    > (インストール時および再起動時に呼ばれます)
    > AfterInstall が呼ばれたときに開始するようになっているかを
    > 確認してみては如何でしょう。
    > https://learn.microsoft.com/ja-jp/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer#add-installers-to-the-service
    > https://stackoverflow.com/questions/1036713/automatically-start-a-windows-service-on-install

    実装されていませんでした。
    下記のように実装したところ、サービスが正常に登録されず、
    ロールバックされるようになりました。

    [RunInstaller(true)]
    public partial class ProjectInstaller : System.Configuration.Install.Installer
    {
    private readonly ServiceProcessInstaller processInstaller;
    private readonly System.ServiceProcess.ServiceInstaller serviceInstaller;
    public ProjectInstaller()
    {
    InitializeComponent();
    processInstaller = new ServiceProcessInstaller();
    serviceInstaller = new System.ServiceProcess.ServiceInstaller();
    // Service will run under system account
    processInstaller.Account = ServiceAccount.LocalSystem;
    // Service will have Automatic Start Type
    serviceInstaller.StartType = ServiceStartMode.Automatic;
    //serviceInstaller.ServiceName = "Windows Automatic Start Service";
    serviceInstaller.ServiceName = "Service1";
    Installers.Add(serviceInstaller);
    Installers.Add(processInstaller);
    serviceInstaller.AfterInstall += ServiceInstaller_AfterInstall;
    }

    private void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
    {
    ServiceController sc = new ServiceController("Service1");
    //ServiceController sc = new ServiceController("Windows Automatic Start Service");
    //ServiceController sc = new ServiceController(serviceInstaller.ServiceName);
    sc.Start();
    }
    }

    サービス登録時のログが下記になります。
    アセンブリ 'C:\test\sss\WindowsService1.exe' をインストールしています。
    該当するパラメーター:
    logtoconsole =
    assemblypath = C:\test\sss\WindowsService1.exe
    logfile = C:\test\sss\WindowsService1.InstallLog
    サービス 'Service1' をインストールしています...
    サービス 'Service1' は正常にインストールされました。
    EventLog ソース Service1 をログ Application に作成しています...
    サービス 'Service1' をインストールしています...
    EventLog ソース Service1 をログ Application に作成しています...
    アセンブリ 'C:\test\sss\WindowsService1.exe' をロールバックしています。
    該当するパラメーター:
    logtoconsole =
    assemblypath = C:\test\sss\WindowsService1.exe
    logfile = C:\test\sss\WindowsService1.InstallLog
    ソース Service1 の前の状態にイベント ログを復元しています。
    ソース Service1 の前の状態にイベント ログを復元しています。
    サービス Service1 をシステムから削除しています...
    サービス 'Service1' は正常にシステムから削除されました。
    サービス 'Service1' を停止しようとしました。

    上記を見ると例外は出ていないようです。
    うーーん。困った。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101914  Re[3]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ 魔界の仮面弁士 -(2023/05/12(Fri) 17:00:50)
    No101913 (kiku さん) に返信
    > logfile = C:\test\sss\WindowsService1.InstallLog
    > 上記を見ると例外は出ていないようです。

    ログには例外が記録されていなかったのですね?


    > 下記のように実装したところ

    Jun 24, 2009 at 8:23 (adrianbanks 氏)によると
    >> ou should also check the Status property to see what state
    >> it is already in before calling start (it may be running, paused, stopped, etc..).
    だそうです。


    それ以外のコメントだと:


    May 1, 2014 at 1:28 (goamn 氏)
    >> The errors seized once I commented out the line "InitializeComponent()".

    Feb 28, 2018 at 14:21 (Konstantin 氏)
    >> Thank you for this useful comment.
    >> After I had commented out InitializeComponent() call, my service also started perfectly

    うーん。両者で異なる見解になっている気がする。


    Jan 4, 2013 at 17:40 (Matsu Q. 氏)
    >> I eventually found an alternative solution that makes use of the command line:

    sc.exe を直接呼ぶのではなく、cmd.exe 経由で呼んでいる理由は不明。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101915  Re[4]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ 魔界の仮面弁士 -(2023/05/12(Fri) 17:10:20)
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101917  Re[5]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/12(Fri) 17:52:17)
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101935  Re[6]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/16(Tue) 16:30:54)
    No101917 (kiku さん) に返信
    > ■No101915 (魔界の仮面弁士 さん) に返信
    >>■No101914 (魔界の仮面弁士) に追記
    >>>>下記のように実装したところ
    >>
    >>別の実装例として:
    >>http://kenzauros.com/blog/add-own-installer-and-auto-start-to-windows-service-with-csharp/
    >
    > ありがとうございます。
    > こちらの方法も試してみたいと思います。
    > しばらく時間ください。

    上記、検証してみましたが、
    上記は、コマンドラインからインストール、アンインストール、起動、停止ができるようにするもので、
    シャットダウン状態から電源ONで、自動起動するものではありませんでした。
    よって、この方法は使えなさそうです。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101916  Re[4]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/12(Fri) 17:51:34)
    No101914 (魔界の仮面弁士 さん) に返信
    > ■No101913 (kiku さん) に返信
    >> logfile = C:\test\sss\WindowsService1.InstallLog
    >>上記を見ると例外は出ていないようです。
    >
    > ログには例外が記録されていなかったのですね?

    その通りです。

    > それ以外のコメントだと:
    > May 1, 2014 at 1:28 (goamn 氏)
    > >> The errors seized once I commented out the line "InitializeComponent()".
    >
    > Feb 28, 2018 at 14:21 (Konstantin 氏)
    > >> Thank you for this useful comment.
    > >> After I had commented out InitializeComponent() call, my service also started perfectly
    >
    > うーん。両者で異なる見解になっている気がする。
    >
    >
    > Jan 4, 2013 at 17:40 (Matsu Q. 氏)
    > >> I eventually found an alternative solution that makes use of the command line:
    >
    > sc.exe を直接呼ぶのではなく、cmd.exe 経由で呼んでいる理由は不明。

    ちょうど当方でも上記のコメントを発見し、実験していたところでした。
    InitializeComponent()を削除することによって
    サービスをエラーなく登録できるようになりました。

    >>下記のように実装したところ
    >
    > Jun 24, 2009 at 8:23 (adrianbanks 氏)によると
    > >> ou should also check the Status property to see what state
    > >> it is already in before calling start (it may be running, paused, stopped, etc..).
    > だそうです。

    サービス登録を実施し実施したところ
    下記のような状態になりました。

    1.パターン1
      1:ログインしている状態
      2:サービスを起動
      3:シャットダウンする
      4:PCの電源入れる
      5:ログインする
     ログを見ると、上記の電源入れるあたりからログが記録
     されているため、サービスが自動起動されているようです。

    2.パターン2
      1:ログインしている状態
      2:サービスを停止し、自動起動になっていることを確認
      3:シャットダウンする
      4:PCの電源入れる
      5:ログインする
     ログを見ると、何も記録されていない。
     サービスを見るとサービスが起動されていない。

    この状況から、上記のコメントのように
    起動しているかしていないかをどこかで判定しなくてはならないのか?
    と思っていますが、どのように実装して良いか不明。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101936  Re[5]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/16(Tue) 16:34:48)
    No101916 (kiku さん) に返信
    > ■No101914 (魔界の仮面弁士 さん) に返信
    >>■No101913 (kiku さん) に返信
    > サービス登録を実施し実施したところ
    > 下記のような状態になりました。
    >
    > 1.パターン1
    >   1:ログインしている状態
    >   2:サービスを起動
    >   3:シャットダウンする
    >   4:PCの電源入れる
    >   5:ログインする
    >  ログを見ると、上記の電源入れるあたりからログが記録
    >  されているため、サービスが自動起動されているようです。
    >
    > 2.パターン2
    >   1:ログインしている状態
    >   2:サービスを停止し、自動起動になっていることを確認
    >   3:シャットダウンする
    >   4:PCの電源入れる
    >   5:ログインする
    >  ログを見ると、何も記録されていない。
    >  サービスを見るとサービスが起動されていない。
    >
    > この状況から、上記のコメントのように
    > 起動しているかしていないかをどこかで判定しなくてはならないのか?
    > と思っていますが、どのように実装して良いか不明。

    現在、上記の状況です。
    引き続き情報を求めます。
    ※ずっと検証してられないので、どこかで諦めるかもしれません。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101937  Re[6]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/16(Tue) 17:28:44)
    No101936 (kiku さん) に返信
    > ■No101916 (kiku さん) に返信
    >>■No101914 (魔界の仮面弁士 さん) に返信
    > >>■No101913 (kiku さん) に返信
    >>サービス登録を実施し実施したところ
    >>下記のような状態になりました。
    >>
    >>1.パターン1
    >>  1:ログインしている状態
    >>  2:サービスを起動
    >>  3:シャットダウンする
    >>  4:PCの電源入れる
    >>  5:ログインする
    >> ログを見ると、上記の電源入れるあたりからログが記録
    >> されているため、サービスが自動起動されているようです。
    >>
    >>2.パターン2
    >>  1:ログインしている状態
    >>  2:サービスを停止し、自動起動になっていることを確認
    >>  3:シャットダウンする
    >>  4:PCの電源入れる
    >>  5:ログインする
    >> ログを見ると、何も記録されていない。
    >> サービスを見るとサービスが起動されていない。
    >>
    >>この状況から、上記のコメントのように
    >>起動しているかしていないかをどこかで判定しなくてはならないのか?
    >>と思っていますが、どのように実装して良いか不明。
    >
    > 現在、上記の状況です。
    > 引き続き情報を求めます。
    > ※ずっと検証してられないので、どこかで諦めるかもしれません。

    SQLServerExpressのサービスは、自動起動するのかを念のため検証したところ、
    上記パターン1、パターン2と同様な結果になりました。
    どうやら、この動作が仕様のようです。

    どこかにマイクロソフトのドキュメントがあれば良いのですが。。。。
    仕様として諦めようと思います。

    もし、ご意見あればコメント欲しいです。
記事No.101905 のレス /過去ログ178より / 関連記事表示
削除チェック/

■101942  Re[7]: Windowsサービスがシャットダウン状態から起動しない
□投稿者/ kiku -(2023/05/17(Wed) 12:24:18)
    No101937 (kiku さん) に返信
    > ■No101936 (kiku さん) に返信
    >>■No101916 (kiku さん) に返信
    > >>■No101914 (魔界の仮面弁士 さん) に返信
    >>>>■No101913 (kiku さん) に返信
    > SQLServerExpressのサービスは、自動起動するのかを念のため検証したところ、
    > 上記パターン1、パターン2と同様な結果になりました。
    > どうやら、この動作が仕様のようです。
    >
    > どこかにマイクロソフトのドキュメントがあれば良いのですが。。。。
    > 仕様として諦めようと思います。
    >
    > もし、ご意見あればコメント欲しいです。

    その後、高速スタートアップを無効にすることで
    パターン2でも、サービスが自動的に開始されることを
    確認しました。

    解決とさせて頂きます。
記事No.101905 のレス / END /過去ログ178より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -