どうも、スクリプト内で ActiveXObject を使って COM オブジェクトのインスタンスを作っているところで失敗しているらしい。
レジストリに異常がなかろうかと、ProgID を探してみた…ら、あった。じゃあ対応する CLSID は…ない!?
すわ再インストールかと思ったところで、俺は 64bit OS を使っているんだということに思い当った。
HKCR\CLSID 以下にはなかった。では、HKCR\Wow6432Node\CLSID なら…ありました。
つまりこう。
俺の OS は 64bit なので、cscript.exe も 64bit 版。
64bit OS で 32bit プロセスは動くが、64bit プロセスは 32bit DLL を読み込めないという制限がある。
従って、C:\Windows\System32\cscript.exe (こいつは 64bit 版)の代わりに、C:\Windows\SysWow64\cscript.exe (こっちが 32bit 版。ああ紛らわしい)を明示的に実行してやればよかったと。
単にコマンド プロンプトから cscript とだけ打つと前者が起動してしまうのですな。
これは、何か、32bit DLL をロードするスクリプトを含むようなファイルが関連付けされるときには注意しておかなければならないことだなぁ。