インターネット インフォメーション サービスは、CGI アプリケーションをサポートしています。ここでは、Web サーバーへの CGI アプリケーションのインストールと構成に関する管理上の情報について説明します。CGI アプリケーションのプログラミングに関する一般的な情報については、Microsoft の MSDN Online Library を参照してください。
Web サーバーが、CGI プログラム名およびプログラムに必要なパラメータを含む URL を受け取ると、CGI プログラムが実行されます。CGI プログラムをコンパイルして実行可能ファイル (.exe) にする場合は、プログラムを置くディレクトリに実行アクセス権を設定し、ユーザーがプログラムを実行できるようにする必要があります。Perl スクリプトなどのスクリプトとして CGI プログラムが記述されている場合は、ディレクトリに実行アクセス権またはスクリプト アクセス権を設定します。スクリプト アクセス権を使用するには、スクリプトのインタプリタがスクリプト エンジンとして設定されていなければなりません。
CGI アプリケーションを新たに開発しようとする場合、いくつかの選択肢が用意されています。実行の速さが求められる場合は、CGI の代わりに ISAPI 拡張機能の使用が考えられます。開発の容易さを重視する場合は、ASP アプリケーションの使用が考えられます。ASP は、HTTP ヘッダーの解析など、CGI アプリケーションの作成に伴う作業の多くを処理するため、経験の浅いプログラマやスクリプト作成者には特に魅力的な手法です。詳細については、「Active Server Pages」を参照してください。
CGI アプリケーションをインストールして構成するにはWindows のオペレーティング システムでは、Perl、SED、および AWK を提供していません。インタプリタは、サード パーティの開発元から入手できます。
スクリプト アクセス権を指定する場合は、ディレクトリのプロパティ シートで、スクリプトのインタプリタをスクリプト エンジンとして指定する必要があります。ディレクトリ内で実行できるのは、スクリプト エンジンとして指定されているインタプリタだけです。実行可能ファイル (.dll ファイルと .exe ファイル) を直接実行することはできません。 つまり、URL にプログラム名を入れてブラウザ要求を行っても、"Web サーバー上の" 実行可能ファイルを起動することはできません。[スクリプト エンジン] オプションでスクリプト アクセス権を有効にすれば、コンテンツ ファイル (.htm ファイルや .gif ファイルなど) と CGI スクリプトを同じディレクトリに安全に格納できます。この場合、コンテンツ ファイルはブラウザに表示され、スクリプトは実行されますが、無許可のプログラムを実行したり、スクリプト コマンドをブラウザに表示したりすることはできません。
重要 実行可能ファイルを含むディレクトリに、読み取りアクセス権が設定されている場合、サイトの利用者は実行可能ファイルをダウンロードして実行することができます。セキュリティを考慮して、実行可能ファイルは、読み取りアクセス権が設定されていない別のディレクトリに配置することをお勧めします。
インターネット インフォメーション サービスは、ファイル名の拡張子をインタプリタにマップします。たとえば、拡張子が .pl のファイルに格納されている Perl スクリプトを使用する場合は、Perl スクリプトを実行するプログラムに拡張子 .pl をマップします。拡張子が .bat および .cmd のファイルは、コマンド インタプリタ (Cmd.exe) にマップします。詳細については、「アプリケーションのマッピングを設定する」を参照してください。
INTFS のアクセス権を使用する場合は、プログラムを実行するすべてのユーザーに、ディレクトリに対する実行アクセス権を与える必要があります。匿名ユーザーを受け付ける Web サイトでは、匿名ユーザー (IUSR_computername アカウント) に、実行アクセス権を与えます。
インターネット インフォメーション サービスは、標準のサーバー環境変数の大部分をサポートしています。
リモート サーバーで実行中の Cmd.exe にマップされているスクリプトに別のスクリプトからアクセスする場合、既定の実行時ディレクトリは、ローカル コンピュータ上の %SYSTEM32% に設定されます。%SYSTEM32% の既定値は、Windows 2000 以降では \Winnt\System32、Windows 95 以降では \Win95\System です。
セキュリティ強化のため、Web サーバーは、マップされている CGI アプリケーションにコマンド インタプリタの特殊文字を渡しません。既定では、CGI アプリケーションを呼び出す URL で次の文字を使うことはできません。
| ( , ; % < >
お勧めはできませんが、レジストリの AllowSpecialCharsInShell の値を変更すれば、一部の特殊文字を使用できるようになります。詳細については、「WWW サービスのレジストリ エントリ」を参照してください。