Windows Scripting无法找到参考

时间:2011-08-31 12:29:59

标签: com vbscript wsh

我有一个不再有效的Windows脚本文件。

脚本看起来像这样

<job>
    <reference object="Some.Component.1" />
    <script language="VBScript">

x = CreateObject("Some.Component.1")
MsgBox TypeName(x)

    </script>
</job>

当我使用cscript或wscript运行脚本时,我收到错误

  

Windows脚本宿主:找不到此引用的类型库:   Some.Component.1

错误代码为0x80040068,表示“索引无效”。 (我试图删除.1索引,但它不起作用)

奇怪的是,如果删除行<reference object="Some.Component.1"/>,CreateObject行将起作用并创建对象。

我知道这个剧本大约一年前就有用了。 “Some.Component”库已更新,但由于CreateObject有效,我不知道它有什么问题。

我已经在Server 2008 R2(64位),Server 2003(32位)和Windows 7(64位)上测试了相同错误的脚本。

Some.Component是32位。对于64位机器,我在SysWow64文件夹中使用了cscript,wscript。

(我需要<reference../>来访问组件中的枚举)

1 个答案:

答案 0 :(得分:1)

未注册类型库。这与注册的对象不同且是分开的。通常控件都会同时执行这两项操作。

我建议您首先尝试取消注册并重新注册DLL。

regsvr32.exe /u c:\path\to\control.dll
regsvr32.exe c:\path\to\control.dll

如果这不起作用,请尝试使用RegTLib.exe直接注册类型库(*.tlb)。

regtlib.exe c:\path\to\control.dll

OR

regtlib.exe c:\path\to\control.tlb

请注意,类型库可以是单独的文件,也可以嵌入DLL中。

有关regTLib.exe的更多信息,请参见此处: