タイトル通りだけど Windows Server 2019 の IIS で ClassicASP(Win32) を動作させる
導入から動作確認
まずは ASP の導入
このあたりは他の記事にも書いてあるでしょう。
サーバの役割で**「ASP」**を選択する
仮想ディレクトリ(アプリケーションディレクトリ)を作成する
このあたりも旧来の IIS5/6 と同じような概念があるから大丈夫でしょう。
とりあえず、アプリケーションプールとしては「クラシック」となるモードを選択しておく。
ハンドラーマッピングの確認
拡張子「.asp」に「ClassicASP」が対応している
ちなみに「%windir%」は環境変数で、Windowsのインストールディレクトリのこと。
大抵は「C:\Windows」だな。
サンプルASPで動作確認
シンプルな「ハローワールド」
うん、動作した
いよいよ 32Bit 化
アプリケーションプールの設定変更
「クラシックモード」のアプリケーションプールを新規作成して、「32ビットアプリケーションの有効化」を**「True」**にして、「ASPClassic」として保存して、これを ClassicASP のアプリケーションプールとして対応させる
ハンドラーの変更
実は「ASP.dll」は二つあります。(64Bit と 32Bit)。← 私は、ハマりましたよ
64Bit版のClassicASPがあるなんて想像できませんでしたよ。orz
SysWOW64 (64Bit Windows 上の Win32 な System32 のフォルダ)が 32Bit-ClassicASP ですよ。
という事で、ハンドラーマッピングを 32bit の ASP.dll に変更。
以上で終了
一応、VisualBASIC6.0で作った AcitiveX-DLL(当然 Win32 な COM コンポーネント)も、VisualBASIC6.0 ランタイム込みで Setup.exe を作って、それを使ってインストールしてやれば、以上の手順で動作した。(個人的経験で公式ではないよ)
蛇足1
ActiveX.DLL を登録する「regsvr32.exe」も 64Bit と 32Bit の二つがあるので、VB6 で作った ActiveX.dll を登録する際には**「SysWOW64」**の「regsvr32.exe」を使う事
蛇足2
ClassicASPとは直接関係ないけど「ActiveScript」という兄弟関係な WSH の「cscript.exe」「wscript.exe」も 32Bit と 64Bit の二つがあるよ。
WSH 内部で 32Bit な ActiveX-DLL を呼び出すなら、SysWOW64の「cscript.exe」「wscript.exe」を呼び出す必要がある。
蛇足3
Win64上の Win32 に関しては、レジストリも「HKCU\Software」とかが、軒並み「HKCU\Software\Wow6432Node\」にリダイレクトされていたりするので、注意です。
私の COM/ActiveX-DLL には、レジストリを扱うモノが多いのですが、.regファイルで、レジストリに登録する際にも、32Bit な regedit.exeを使う必要があったりしますよ。
(まぁ、手動で「Wow6432Node」へ移動させてもいいのですけど...)
Win64上でのWin32なネタ
- 64bit版のWindowsで32bitアプリケーションからsystem32ディレクトリのファイルを開けない
- %windir%\Sysnative\shell32.dll というような SysNative という仮想ディレクトリがあるらしい。