Windows脚本宿主JScript脚本引擎难度

时间:2016-12-29 16:44:18

标签: windows jscript wsh

我试图在32位Windows 7 PC上使用Windows Script Host 5.8运行JScr​​ipt脚本。此脚本是开源软件项目的更大构建工作的一部分,其中ActiveXObject作为脚本的一部分创建。这无法运行,但我怀疑特定脚本没有错,而是我的本地Windows Scripting Host(WSH)设置。

我根据以下'裸骨来推断这一点。我用一行测试脚本运行的测试:

我使用记事本准备一个脚本,该脚本保存为' test.js'并包含以下行:

var strLit = "This is a string literal.";

然后我使用以下命令执行上述脚本:

cscript / e:jscript test.js

这似乎成功运行,当然没有返回输出,但严重没有错误信息。

然后我将脚本更改为仅包含以下行:

print("Hello World!");

使用与上述相同的命令运行时,会收到以下错误消息:

Microsoft JScript运行时错误:预期的对象

然后我将脚本更改为仅包含以下行:

var fso = new ActiveXObject("Scripting.FileSystemObject");

使用与上述相同的命令运行时,会收到以下错误消息:

Microsoft JScript运行时错误:自动化服务器无法创建对象

这是脚本的第三个版本,其中包含上述开源软件脚本中失败的行。但是,基于成功创建字符串变量脚本,我推断WSH在某种程度上起作用。但是,“你好世界”的事实是脚本失败,以及ActiveXObject的失败表明可能无法在我的计算机上正确设置带有JScript引擎的WSH或以其他方式运行。

我还推断,这可能与Internet Explorer安全级别无关,因为此脚本是从命令行运行的,没有指向Internet Explorer的链接。

我已尝试解决此问题:

  • 确保Windows将文件与扩展名' .js'相关联。与WSH,虽然使用' / e:'如上所述在调用脚本时切换,无论如何这都不是问题。

  • 使用管理员提升的命令提示符,使用以下命令在我的计算机上重新注册脚本组件:

    regsvr32%systemroot%\ system32 \ vbscript.dll regsvr32%systemroot%\ system32 \ jscript.dll regsvr32%systemroot%\ system32 \ dispex.dll regsvr32%systemroot%\ system32 \ scrobj.dll regsvr32%systemroot%\ system32 \ scrrun.dll regsvr32%systemroot%\ system32 \ wshext.dll regsvr32%systemroot%\ system32 \ wshom.ocx

以上所有命令都成功运行,但最后两个命令除外,其中收到以下错误:

模块" C:\ Windows \ system32 \ wshext.dll"已加载,但对DllRegisterServer的调用失败,错误代码为0x80040201

模块" C:\ Windows \ system32 \ wshom.ocx"已加载,但对DllRegisterServer的调用失败,错误代码为0x80040201

  • 尝试在完全禁用病毒防护(F-Secure)并且没有互联网连接的情况下运行脚本。

我会从上面的测试中推断出以下内容:

  • 脚本一:这是一个简单的脚本,声明并初始化一个变量而不执行任何其他操作,这意味着它应该运行并且可能确认JScript引擎至少存在并且从根本上起作用并不奇怪。
  • 脚本二:这又是一个简单的脚本,但可以使用其他功能(I. e。' print')。
  • 脚本三:这是一个简单的脚本,但是试图通过求助于应用程序(标识为' Scripting')来创建特定类型的对象来实现此目的。这个#Scripting'在创建新的ActiveXObject时,应用程序作为参数提供,该ActiveXObject在Microsoft JScript引用中被标识为' servername'。通常,'服务器名称'在此上下文中由Microsoft JScript引用定义为提供对象的应用程序的名称'。我注意到脚本3的错误消息引用了一个'自动化服务器'因此想知道这里是否有链接。

有没有人对这里可能存在的问题有任何想法,特别是脚本三?上面脚本3中的错误消息已在Internet Explorer安全级别的上下文中在线广泛讨论,但由于这是在命令行上运行的脚本,我无法看到此解决方案将如何解决此问题。

非常感谢任何想法。

由于

杰森

0 个答案:

没有答案