我有一个不再有效的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../>
来访问组件中的枚举)
答案 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的更多信息,请参见此处: