1. ホーム
  2. c#

[解決済み] インストール時にWindowsサービスを自動的に開始する

2022-08-23 15:28:35

質問

InstallUtil.exe を使用してインストールした Windows サービスがあります。スタートアップ方法を自動に設定したにもかかわらず、インストール時にサービスが開始されず、手動でサービスを開き、開始をクリックする必要があります。コマンドラインまたはサービスのコードから開始する方法はありますか?

どのように解決するのですか。

Installerクラスで、AfterInstallイベント用のハンドラを追加してください。そして、イベントハンドラ内でServiceControllerを呼び出すことで、サービスを開始することができます。

using System.ServiceProcess;
public ServiceInstaller()
{
    //... Installer code here
    this.AfterInstall += new InstallEventHandler(ServiceInstaller_AfterInstall);
}

void ServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
    ServiceInstaller serviceInstaller = (ServiceInstaller)sender;

    using (ServiceController sc = new ServiceController(serviceInstaller.ServiceName))
    {
             sc.Start();
    }
}

これで、インストーラでInstallUtilを実行すると、インストールした後、自動的にサービスを起動するようになります。