1

如果是关于 VBScript,我并没有真正尝试过,但我有机会通过论坛阅读了很多东西,实际上昨天我帮助某人检查了为什么他的脚本不起作用并为他找到了解决方案。因此,我在本地修改了这个脚本,并按照我的方式进行了操作,并且它可以工作,但是在另一方,无法初始化对象之一。

有罪的线就像

    Set WshNet = WScript.CreateObject("WScript.Network")

另一个人被告知要删除 WScript 的东西,它似乎在提问者方面有效。

我首先认为它可能与我这边使用 Wscript.exe 和那一方使用 CScript.exe 相关(我的假设),但我在命令行中检查了这一点,它仍然有效。那么,我想知道和理解的是为什么会发生这种情况?为什么调用 CreateObject 的脚本可以与“WScript”一起使用。但在另一个系统上,您需要删除该“WScript”。让它继续工作?感谢您的时间和回答。;) 此致。

4

1 回答 1

4

“WScript.CreateObject”或“WScript.Echo”中的“WScript”是由 c|wscript.exe 脚本宿主提供的(对象的名称)。如果您在其他主机(例如 ie 或 mshta)下/在其中运行 VBScript,则没有这样的对象。

该语言本身有一个(不同的!有关详细信息,请参阅文档)“CreateObject”函数,可以在所有 VBScripts 主机下/中使用。所以为了安全起见,使用普通的“CreateObject”。

“WScript.Network”中的 WScript 是 COM 对象的 ProgId 的一部分,它可能安装在您的计算机上(或未安装)。那些“名字”为“WScript”的 COM 对象与 c|wscript.exe 提供的 WScript 对象完全不同。

所以我的第一个假设:“某人”在 ie 或 mshta 下/中执行了代码,并通过删除“WScript”解决了问题。从“WScript.CreateObject”,即回退到 VBScript 自己的 CreateObject。

于 2012-01-18T18:44:42.750 回答