1.Windowsサービスプロジェクトを新規作成
- Visual Studioを開き、新規プロジェクトを作成
- テンプレート選択:Visual C# → Windows → Windows サービス
- プロジェクト名と保存先を設定し、OKをクリック
注意:新しいバージョンのVisual Studioにはこのテンプレートが同梱されなくなりました。.NET Frameworkのみ対応。.NET Core/.NET5以降は
Worker Serviceの使用を推奨します。
2.プロジェクト構成の解説
自動生成される主要ファイル:
- Program.cs:アプリケーションのエントリーポイント
- Service1.cs:サービスの本体ロジッククラス
1. Program.cs エントリーコード
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}Code language: JavaScript (javascript)
役割:サービスホストを起動し、1つまたは複数のサービスインスタンスを読み込みます。
2. Service1.cs サービスメインクラス
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
// 【サービス起動時に実行】
protected override void OnStart(string[] args)
{
}
// 【サービス停止時に実行】
protected override void OnStop()
{
}
}
OnStart:サービス起動で呼び出され、業務ロジックを記述しますOnStop:サービス停止時に呼び出され、リソース解放処理を記述します
3.インストーラーを追加
この手順は必須です。これを行わないとシステムサービスへ登録できません。
操作手順
Service1のデザインビュー上で右クリック → インストーラーの追加- Visual Studioが自動で
ProjectInstaller.csを作成。2つの主要コンポーネントが含まれます:serviceInstaller1serviceProcessInstaller1

コンポーネントプロパティ設定
- serviceInstaller1(サービス情報設定)
ServiceName:コード上で使用する内部サービス名DisplayName:サービスマネージャーに表示される名前Description:サービスの説明文StartType:起動種類Manual(手動)/Automatic(自動)
- serviceProcessInstaller1(実行アカウント設定)
Account:実行するユーザーIDLocalSystem:ローカルシステムアカウント(最高権限、テスト向け)User:指定したWindowsアカウント(既定、ユーザー名・パスワードが必要)
4.テスト用業務ロジックを記述
業務処理はService1クラスに実装します。Windowsサービスはデバッグが難しいため、一時的にログ出力で動作確認を行います。インストールとアンインストールが必要になります。
Service1.csを修正
using System.IO;
protected override void OnStart(string[] args)
{
// 起動時ログ出力
File.AppendAllText("log.txt", "起動時間:" + DateTime.Now + Environment.NewLine);
}
protected override void OnStop()
{
// 停止時ログ出力
File.AppendAllText("log.txt", "停止時間:" + DateTime.Now + Environment.NewLine);
}Code language: JavaScript (javascript)
5.コンパイル・インストール・サービス起動
- プロジェクトをビルドし、
WindowsServiceDemo.exeを取得 InstallUtil.exeでサービス登録(管理者権限CMD)
# サービスインストール
InstallUtil.exe WindowsServiceDemo.exe
# サービスアンインストール
InstallUtil.exe /u WindowsServiceDemo.exeCode language: PHP (php)
- サービスマネージャー
services.mscを開き、対象サービスを起動・停止しログを確認
サービスは通常アプリのように直接実行・デバッグできません。専用ツールでインストールする必要があります。
注意点
- F5による直接デバッグ不可:Windowsサービスは直接デバッグできない。デュアルモードを実装し、コマンドライン起動時はコンソールアプリ、インストール後はサービスとして動作させる方式が推奨。
- パスの問題:相対パスは無効になるため絶対パスを使用してください。
- 権限の問題:実行アカウントにより、ディスク、ネットワーク、共有フォルダへのアクセス権限が変わります。
- 起動タイムアウト:
OnStart内で長時間ブロックすると起動失敗と判定されます。重い処理は別スレッドで実行してください。
最初の Windows Service
Previous: Windowsサービス
Next: サービスのインストールとアンインストール