RegAsm したはずの dll が CreateObject できない場合(x64)
x64 環境で RegAsm して vbs から CreateObject しようとして、以下のようなエラーが出ることがある。
C:\tmp\test.vbs(2, 1) Microsoft VBScript 実行時エラー: ActiveX コンポーネントは オブジェクトを作成できません。: 'COMSample.Class1'
これは RegAsm で登録した場所と vbs が実行されている環境が一致していない可能性がある。
たとえば
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /tlb /codebase C:\tmp\COMSample.dll
して
test.vbs
しようとするとエラーになる。
これだと 32 bit 環境に登録した dll を 64 bit 環境の CScript から呼び出そうとしていることになる。これは %systemdrive%\Windows\SysWoW64\CScript.exe test.vbs
と明示的に 32 bit 環境を指定することで解消できる。
つまり両方とも 64 bit 環境にするか
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe /tlb /codebase C:\tmp\COMSample.dll test.vbs
32 bit 環境にそろえればよい。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /tlb /codebase C:\tmp\COMSample.dll %systemdrive%\Windows\SysWoW64\CScript.exe test.vbs
参考:
Windows 7(x64)でVBScriptからCreateObjectすると800A01ADエラー | majishini