結論から言うと、Windows 11では「Windowsの機能の有効化または無効化」からIISを有効にできます。ただし、Internet Information Servicesを無条件に全選択するのではなく、目的に必要なモジュールだけを追加してください。静的HTMLをローカルで確認するだけなら、World Wide Web Servicesの基本HTTP機能、Request Filtering、IIS Management Consoleを基準にします。最後にhttp://localhost/を開き、ローカルで応答するところまで確認します。
この記事の範囲は、Windows 11上でのローカル開発・検証です。localhostが表示されても、LANやインターネットから安全に公開できる状態になったわけではありません。ルーターのポート転送やファイアウォールの受信許可を追加する前に、用途に合うサーバー構成、HTTPS、認証、更新、監視、バックアップを別途設計する必要があります。
用途別に必要な構成を判断する
| 目的 | IIS有効化後に必要なもの | この記事で扱う範囲 |
|---|---|---|
| 静的HTML・画像をlocalhostで確認 | Static Content、Default Document、Request Filtering、管理コンソール | 手順を掲載 |
| ASP.NET Coreアプリ | IISに加え、対象版の.NET Hosting Bundle、発行物、web.config | IIS基盤の確認まで |
| 従来ASP.NET/.NET Framework | アプリに合うASP.NET、.NET Extensibility、ISAPI等 | アプリ公式要件を確認 |
| PHP/CGI | 信頼できるランタイム、CGI、ハンドラーマッピング | 無条件にCGIを追加しない |
| FTP/WebDAV | 専用サービス、認証、権限、暗号化 | 標準手順では追加しない |
| インターネット公開 | 本番用ホスト、HTTPS、最小権限、更新、監視、防御 | Windows 11の有効化とは別設計 |
IIS 7以降は多数の独立したモジュールで構成されています。MicrosoftのIIS資料も、必要な機能だけを組み合わせて攻撃対象と保守範囲を減らす考え方を示しています。ASP、CGI、FTP、WebDAV、IIS 6 Management Compatibilityなどを「念のため」で入れないでください。
作業前に確認すること
- 管理者として機能を追加できるか。会社・学校PCではIT管理者の承認があるか。
- Windows Updateまたは組織の機能ソースへ到達できるか。
- 既にIISや別のWebサーバーを利用していないか。
- ポート80を別アプリが待ち受けていないか。
- 既存の
C:\inetpub、サイト構成、証明書、バインドを変更してよいか。 - 必要なWindows Editionで目的のIIS機能が表示されるか。Editionにより全機能が使えるとは限らない。
既にIISを使っているPCでは、再有効化や親機能の付け外しを先に行いません。IIS Managerでサイト、アプリケーションプール、バインド、物理パスを記録し、C:\Windows\System32\inetsrv\config\applicationHost.configと必要なサイトコンテンツを、組織のバックアップ手順に従って保護します。
GUIでIISを有効にする
- 作業中のファイルを保存します。
- スタートでコントロール パネルを検索して開きます。
- プログラム、プログラムと機能、Windowsの機能の有効化または無効化の順に開きます。
- Internet Information Servicesを展開します。
- Web Management ToolsでIIS Management Consoleを選びます。
- World Wide Web Servicesを展開し、静的サイト用にCommon HTTP FeaturesのStatic Content、Default Document、HTTP Errorsを確認します。
- SecurityのRequest Filtering、必要に応じてHealth and DiagnosticsのHTTP Loggingを確認します。
- OKを選び、完了まで待ちます。Windowsが再起動を求めた場合は再起動します。
次の画像は2021年時点のWindows 11で、Internet Information Servicesの親項目を選んだ画面です。現行ビルドでは文言や配置が異なる場合があります。親項目だけで目的の子機能がすべて入るとは限らないため、上記の内訳を展開して確認してください。

機能の追加には数分以上かかることがあります。更新ソース、回線、保留中の更新によって時間は変わります。「数秒」「再起動不要」と決めつけず、完了表示と再起動要求を確認してください。

PowerShellで状態を確認・有効化する
GUIで見つからない場合や、同じ構成を再現したい場合は、管理者PowerShellで現在のIIS機能を読み取ります。最初のコマンドは状態確認だけで、設定を変更しません。
Get-WindowsOptionalFeature -Online -FeatureName IIS-* | Select-Object FeatureName, State
静的コンテンツと管理コンソールを有効にする例は次のとおりです。必要な機能名を明示しているため、用途に不要なASP、CGI、FTP、WebDAVは追加しません。
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,IIS-WebServer,IIS-CommonHttpFeatures,IIS-StaticContent,IIS-DefaultDocument,IIS-HttpErrors,IIS-HttpLogging,IIS-RequestFiltering,IIS-WebServerManagementTools,IIS-ManagementConsole -All
-Allは指定機能に必要な親機能を有効にするための指定です。IISのすべての子モジュールを有効にする指定ではありません。結果に再起動が必要と表示された場合は、作業を保存して再起動します。
IIS Managerを起動する
現行Windows 11では、スタートでIISまたはinetmgrを検索し、Internet Information Services (IIS) Managerを開くのが確実です。Windows Toolsから開くこともできます。
次の画像は旧スタートメニューの「すべてのプログラム」「管理ツール」を使った経路です。画面が一致しなくても異常ではありません。画像内の目的はIIS Managerを見つけることなので、現在は検索を使ってください。

IIS Management Consoleを選んでいれば、IIS Managerが検索結果またはWindows Toolsに表示されます。

起動後は左のConnectionsでコンピューター名を展開し、Sites、Default Web Siteを確認します。サイトの状態がStartedであること、BindingとPhysical Pathを変更していないことを確認します。

IIS Managerが見つからない場合は、Webサーバー本体を何度も付け外しせず、IIS-ManagementConsoleのStateを確認します。
Get-WindowsOptionalFeature -Online -FeatureName IIS-ManagementConsole
localhostで動作確認する
- IIS ManagerでDefault Web SiteがStartedになっていることを確認します。
- ブラウザーのアドレス欄へ次を入力します。
http://localhost/
- IISの既定ページまたは配置した静的ページが表示されれば、ローカルのHTTP応答を確認できています。
- ブラウザーの開発者ツールまたはIISログで、意図したステータスコードを確認します。
次の画像は既定ページが表示された例です。Windowsの更新や既定コンテンツの状態により、見た目が同じでない場合があります。重要なのは、意図したサイトがlocalhostへ正常なHTTP応答を返すことです。

localhostは自分のPCを指します。他のPCやスマートフォンから開けるか、インターネットから到達できるか、HTTPSが安全かは確認していません。ローカル検証が目的なら、外部から到達できるように設定を広げる必要はありません。
コマンドでローカル状態を確認する
表示されない場合は、設定を増やす前に状態を読み取ります。次のコマンドは管理者PowerShellで実行します。
Get-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole,IIS-ManagementConsole
Get-Service W3SVC
& "$env:windir\System32\inetsrv\appcmd.exe" list site
Test-NetConnection localhost -Port 80
IIS-WebServerRoleがEnabledか。W3SVCがRunningか。- Default Web SiteがStartedか。
- localhostのポート80へTCP接続できるか。
ポート80を別プロセスが使っている可能性がある場合は、次で待受けを確認します。表示されたプロセスを即座に終了せず、どのアプリやサービスが所有しているかを確認してください。
Get-NetTCPConnection -LocalPort 80 -State Listen -ErrorAction SilentlyContinue | Select-Object LocalAddress, LocalPort, OwningProcess
症状別の切り分け
| 症状 | 確認点 | 安全な対応 |
|---|---|---|
| IIS Managerがない | IIS-ManagementConsoleのState | 管理コンソールだけを追加 |
| localhostへ接続できない | W3SVC、サイト状態、ポート80 | 停止理由と競合プロセスを特定 |
| HTTP 404 | Physical Path、Static Content、Default Document、要求URL | ファイル名と機能を確認 |
| HTTP 403 | 既定ドキュメント、ディレクトリ参照、NTFS読取権限 | 一覧表示を有効にせず既定文書を配置 |
| HTTP 503 | Application Poolの状態、イベントログ | 停止原因を修正してから開始 |
| アクセス拒否 | サイト物理パスとApplicationPoolIdentity | 必要なフォルダーだけへ最小権限を付与 |
| 機能追加エラー | Windows Update/組織ソース、保留再起動、Edition | 非公式パッケージを使わず管理者へ確認 |
コンテンツ配置と権限
IISの既定Webサイトは通常C:\inetpub\wwwrootを物理パスに使います。Microsoftのサイト作成資料では、サイト名、物理パス、Bindingを明示してサイトを追加します。複数アプリを試すなら、既定サイトへすべて上書きするより、アプリごとのフォルダー、サイト、アプリケーションプールを分ける方が安全です。
アプリケーションプールは既定でApplicationPoolIdentityを使えます。カスタム物理パスにアクセス許可が必要な場合は、対象のIIS AppPool\アプリプール名へ必要なRead、必要な場合だけ限定フォルダーのWriteを付けます。Everyone、Users、IIS_IUSRSへFull Controlを付けて解決しないでください。アップロード先やログ出力先のWrite権限は、実行ファイルや設定ファイルのフォルダーと分離します。
ASP.NET Coreを動かす場合
IISの有効化だけではASP.NET Coreアプリは動きません。Microsoftの公式手順では、IIS Management ConsoleとWorld Wide Web Servicesに加え、対象の.NET Hosting BundleをインストールしてASP.NET Core Moduleを追加します。Hosting BundleをIISより先に入れた場合は、IIS有効化後にHosting Bundleを修復する必要があります。アプリが対象とする.NETのサポート状態と発行設定を確認してください。
静的サイト確認の段階で、ASP.NET、CGI、ISAPI、WebSocket、Windows Authenticationを先回りして全選択しません。アプリの公式要件が示すものだけを追加し、追加後に再びlocalhostで確認します。
外部公開とローカル検証を分ける
- localhost成功を理由にWindows Firewallの受信規則を広げない。
- ルーターで80/443を開放しない。
- トップレベルのワイルドカードBindingを安易に使わず、公開時は明示したホスト名を設計する。
- HTTPだけで認証情報や個人情報を送らない。
- 開発PCへ本番秘密、顧客データ、実運用証明書を置かない。
- 公開が必要なら、更新・バックアップ・監視・証明書更新を継続できる本番ホストを用意する。
MicrosoftのASP.NET Core向けIIS資料も、トップレベルのワイルドカードBindingは脆弱性につながり得るため、明示的なホスト名を使うよう警告しています。ローカル検証では公開設定を増やさず、外部公開は別の変更計画としてレビューします。
IISを無効化して元へ戻す
- 必要なサイトコンテンツ、
applicationHost.config、証明書の参照情報、Bindingをバックアップします。 - サイトを利用しているアプリや他ユーザーがいないことを確認します。
- Windowsの機能の有効化または無効化を開き、Internet Information Servicesのチェックを外します。
- 完了表示を待ち、要求された場合は再起動します。
IIS-WebServerRoleのState、W3SVC、ポート80の待受けを確認します。C:\inetpubのコンテンツを残すか削除するかは、機能無効化と別に判断します。
PowerShellで無効化する場合は次を使えます。-Removeは付けず、まず機能を無効化するだけにします。
Disable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole -NoRestart
無効化はIISの機能を停止する操作で、Webコンテンツや独自構成を必ず削除する操作ではありません。再有効化時に古い構成が使われる可能性もあるため、機密データの残存を別途確認します。
よくある質問
Windows 11 Homeでも使えますか?
Windows Editionによって利用可能なIIS機能が異なる場合があります。Windows Featuresに表示される機能を確認し、表示されないモジュールを非公式手段で追加しません。本番用途の可用性やサポート要件はWindows Server等を含めて判断してください。
IISを有効にしたのにinetmgrが見つかりません
IIS Management Consoleが選ばれていない可能性があります。Get-WindowsOptionalFeature -Online -FeatureName IIS-ManagementConsoleでStateを確認し、Web Management ToolsのIIS Management Consoleだけを追加します。
localhostが開けば外部からも見えますか?
分かりません。localhostは自分のPCからの応答だけを確認します。外部接続にはBinding、ファイアウォール、ネットワーク、DNSが関係し、安全な公開にはHTTPS、認証、更新、監視も必要です。ローカル開発が目的なら外部公開しないでください。
再起動は必要ですか?
構成によります。Windowsの画面またはPowerShell結果が再起動を要求した場合に行います。既存記事の「再起動不要」を一律に当てはめません。
公式資料
- Microsoft Learn: IIS Modules Overview
- Microsoft Learn: Add, remove, or hide Windows features
- Microsoft Learn: Enable-WindowsOptionalFeature
- Microsoft Learn: Disable-WindowsOptionalFeature
- Microsoft Learn: Create a Web Site
- Microsoft Learn: Application Pool Identities
- Microsoft Learn: Host ASP.NET Core on Windows with IIS
まとめ
Windows 11でIISを有効にするときは、用途を決め、必要なモジュールだけをWindows FeaturesまたはEnable-WindowsOptionalFeatureで追加します。IIS Manager、W3SVC、サイト状態、http://localhost/を順に確認し、エラー時は機能を増やす前にState、ポート、物理パス、アプリケーションプールを切り分けてください。localhost確認とインターネット公開は別作業です。不要になったらバックアップ後に機能を無効化し、コンテンツの残存も確認します。

コメント