要点としては
- 32bit の COM オブジェクトを使うのであれば、COM オブジェクトを登録する場合の regsvr32.exe も、スクリプトを動かす cscript.exe / wscript.exe も %windir%\SysWOW64 のバイナリを使う必要がある。
- Win7 64bit で通常呼び出されるのは %windir%\System32 下にあるバイナリである。 %windir%\System32\cscript.exe からすれば、%windir%\SysWOW64\regsvr3232 で登録したCOMオブジェクトは、あずかり知らぬものであるため、『未登録』と同じ扱いになる。
- 32bit 環境でオブジェクトを登録してあっても、(それだけでは)64bit のスクリプティングエンジンでは、"Microsoft VBScript 実行時エラー: ActiveX コンポーネントはオブジェクトを作成できません。:" のメッセージで異常終了する。
追記
- コマンドプロンプトを開き、その中で32bit のコマンドシェル %windir%\System32\cmd.exe を起動する。このようにして32bit の箱を作ってしまえば手間がかからず旧資産を活用できるようだ。 この場合、SysWOW64 のスクリプティングエンジンを明示指定せずとも(スクリプトファイルが hoge.vbs なら hoge を指定するだけで)所期の動作となる。
確認対象
- Windows7 64bit SP1 Professional
- Windows Scripting Host version 5.8
- KBA(KaBaya's Archive).DLL 各種アーカイバDLL用ActiveX DLL; KBA(KaBaya's Archive).DLL for windows32