>>224
ちょっとソースを覗いてみたら、Windowsの場合はフックをかけて動作を変えてるようだね。
modules/arch/win32/mod_win32.cのap_cgi_build_commandより
1. 拡張子が.exe .com .bat .cmdの場合は直接起動
2. ScriptInterpreterSourceがRegistry|Registry-Strictならレジストリを見に行く
3. 頭2byteが#!ならインタプリタに渡す。MS-DOSのヘッダが見つかれば直接実行可能
の順でチェックしてる。
MS-DOSのヘッダかどうかの判断は、
1. 読み込めたサイズがヘッダより大きいか?
2. マジックナンバー(=頭2byte)がMZ(=0x5A4D)か?
で行われる。

ちなみに、Un*x系のOSでは#!(shebang)は実行可能形式の一種だから、
直接OSに渡せば良いのでこのような判断は行われない。