3

我正在尝试让 Windows 脚本组件在 x64 开发机器上运行。在 x32 位上工作正常。但似乎无法让它运行,我对 JScript 和 VBScript 都有同样的问题。

这是最简单的 wsc 组件。它所做的一切都会在消息框中弹出“Hello”。如果您将下面的代码片段保存到名为 test_lib.wsc 的文件中,您就可以右键单击并注册它。它现在可以作为 COM 组件使用。

<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<registration
    description="Test Script Library"
    progid="TestScript.Lib"
    version="1.00"
    classid="{314042ea-1c42-4865-956f-08d56d1f00a8}"
>
</registration>
<public>
  <method name="Hello">
  </method>
</public>
<script language="VBScript">
<![CDATA[
Option Explicit
Function Hello()
    MsgBox("Hello.")
End Function
]]>
</script>
</component>

接下来创建以下示例 vb 脚本并将其保存到名为 test.vbs 的文件中

dim o
set o = createobject("TestScript.Lib")
o.hello()

当我使用 cscript 或 wscript 运行 test.vbs 时,我总是得到以下信息。“C:\test.vbs(3, 1) Microsoft VBScript 运行时错误:ActiveX 组件无法创建对象:'TestScript.Lib'”

这在 32 位 XP 上运行良好。有人对可能出现的问题有任何想法吗?

非常感谢诺埃尔。

4

2 回答 2

3

从 Wndows Explorer 上下文菜单注册 wsc,在 64 位 Windows 7 上一切正常。

我从 32 位命令提示符运行时遇到问题,我必须从 regsvr32 重新注册 wsc %windir%\sysWOW64,然后在从 64 或 32 命令提示符运行时,它在 64 位和 32 位版本的 cscript.exe 上运行良好。

您确定在注册 wsc 时使用的是%windir%\sysWOW64文件夹中的 regsvr32 吗?

regsvr32 有两个版本,一个 32 位(在 sysWOW64 中),一个 64 位(在 system32 中),它们都被命名为 regsvr32。

使困惑?加入我们其他人:)

这是一个很好的链接,突出了 64 位 Windows 上的一些问题:都一样,但非常不同

于 2010-02-11T14:31:57.243 回答
0

您需要确保使用 32 位版本的 WScript 或 CScript 运行它。

默认情况下,它将使用 64 位版本运行,并且无法加载 32 位组件。

WScript 和 CScript 的 32 位版本位于"%SystemRoot%\SysWOW64\

我用 RegEdit 添加了一个新的注册表项:-

HKEY_CLASSES_ROOT\VBSFile\Shell\Open32\Command

并给它默认值:-

"%SystemRoot%\SysWOW64\WScript.exe" "%1" %*

这给了我一个 VBS 文件上下文菜单上的 Open32 条目。

对于 CScript 执行,您需要确保 CSript 的路径获取 SysWOW64 文件夹版本。

于 2010-02-11T13:02:44.473 回答