管理特権なしで IIS Express を実行する

作成者: Vaidy Gopalakrishnan

IIS Express は、最も一般的な Web 開発およびテスト タスクを管理特権なしで実行できるように設計されています。 これは、開発者が自分のコンピューターの管理者権限で実行していないシナリオで非常に役立ちます。 管理ユーザーの場合でも、この機能により、Windows Vista および Windows 7 のユーザー アカウント制御 (UAC) ポップアップ ウィンドウでワークフローが中断されなくなります。

この記事では、標準ユーザーが IIS Express で実行できることについて説明し、管理者に限定されるタスクについて説明します。

ローカルでのサイトの実行

IIS Express では、標準ユーザーは予約されていないポート (1024 より大きいポート) を使用して Web サイトをローカルで実行できます。 IIS Express の既定の Web サイト バインドは http://localhost:8080 です。 既定では、WebMatrix と Visual Studio 2010 SP1 Beta によって、localhost と予約されていないポートを使用するように Web サイトも構成されます。

これに対し、外部要求のコンテンツを提供したり、80 や 443 などの予約済みポートを使用したりするには、管理特権が必要です。

Web サイトとアプリケーションの構成

IIS と IIS Express の両方で、サーバー全体の構成情報を含む applicationhost.config ファイルが使用されます。 IIS Express では、すべてのユーザーが applicationhost.config の自分のコピーを所有します。つまり、ユーザーは特別な特権なしでサイトの追加、サイトの削除、仮想ディレクトリの構成などを行うことができます。 IIS Express によって、ユーザーの Documents フォルダー内の applicationhost.config ファイルが検索されます (たとえば、Windows 7 の %userprofile%\Documents\IISExpress\config)。 IIS Express は、/config コマンド ライン スイッチを使用して、カスタム applicationhost.config ファイルを指すこともできます。 そのため、Visual Studio で IIS Express を使用するために管理者である必要はありません。

IIS では、標準ユーザーが書き込むことができないコンピューター全体の applicationhost.config ファイルが使用されるため、IIS の同じタスクは管理者のみが実行できます (IIS は一般的に、サーバー コンピューターで使用されるため、通常、これは個々の開発者の観点から見た制限ではありません)。

ノードの起動と停止

IIS Express を使用すると、標準ユーザーは自分の Web サーバーを自由に起動および停止できます。 これを行うには、WebMatrix と Visual Studio 2010 SP1 Beta を使うか、iisexpress.exe コマンド実行可能ファイルを使用します。 Windows システム トレイ アプリケーションを使用すると、ユーザーは IIS Express インスタンスを参照してシャットダウンすることもできます。

IIS では、ユーザーは Web サイトを直接起動できません。 代わりに、Worker Process Activation Service (WAS) が Web サイトのアクティブ化を担当します。 WAS はシステム サービスであるため、管理者のみが起動または停止できます。

SSL を使用する

Secure Sockets Layer (SSL) 経由でアクセスを構成するには、IIS Express と同様に、IIS Express の管理特権が必要です。 しかし、IIS Express セットアップ プログラムでは、標準ユーザーが IIS Express で SSL を使用できるようにする次のタスクが実行されます。

  • 自己署名 SSL サーバー証明書が自動的に作成され、ローカル コンピューター ストアにインストールされます。
  • SSL 用にポート 44300 から 44399 を予約するように HTTP.SYS が構成されます。 localhost を使用する受信 SSL 要求と、指定した範囲内のポートの 1 つが、自己署名証明書に自動的に関連付けられます。

(HTTP.SYSは、IIS および IIS Express の SSL を処理するオペレーティング システム コンポーネントです。セットアップ プログラムは、昇格された特権でセットアップが実行されるため、HTTP.SYS を構成できます)。

したがって、SSL を使用して IIS Express で Web サイトをテストすることは、次のようなバインドを applicationhost.config のサイト要素に追加するのと同じくらい簡単です。

<binding protocol="https" bindingInformation="*:44300:localhost" />

これは、ローカル トラフィック (localhost 要求) と指定されたポート範囲に対してのみ機能します。 カスタム SSL 証明書を構成したり、指定された範囲外のポートを使用して SSL を実行したりするには、管理者特権が必要です。

まとめ

IIS Express を使用すると、管理者以外のユーザーは次のタスクを実行できます。

  • Web サイトをローカルで実行し、1024 より大きいポート番号を使用する。
  • Web サイト、アプリケーション、仮想ディレクトリを追加、削除、変更する。
  • Web サーバーを起動および停止する。
  • 事前にインストールされている自己署名 SSL 証明書と 44300 から 44399 のポートを使用して、Web サイトをテストするための SSL サポートを追加する。

次のタスクを実行するには、管理者特権が必要です。

  • 80 や 443 などの予約済みポートを使用する。
  • 外部トラフィックの要求を処理する。
  • カスタム SSL 証明書を構成する。
  • 44300 から 44399 の範囲外のポートを使用して、SSL を実行する。