Windows 7(x64)でVBScriptからCreateObjectすると800A01ADエラー

kiuyu

2013/05/31

発生方法

Windows 7 (x64) Home Premiumでcscript.exeで以下のVBScriptを実行。きっとXPやVistaのx64版でも同じようなことが起こる……はず。

Dim daoDbe
Set daoDbe = CreateObject("DAO.DBEngine.36")

ActiveXコンポーネントはオブジェクトを作成できません。:”DAO.DBEngine.36″といったメッセージが表示される。

原因

64bitのcscript.exeで実行しているので、32bitのdll(上のDAOの場合だとdao360.dll)は呼べない。

対応

32bitのcscript.exe(%SystemRoot%\SysWow64\cscript.exe)で実行してやる。

疑問

アウトプロセスなCOMサーバ(VB6で言うところのActiveX EXE)だとどうなるんだろう。WOW64とやらがうまいことやってくれたりしないだろうか。後で試してみよう。

参考