2012-01-18 100 views
0

我並沒有真正嘗試過它是否涉及VBScript,但我有機會通過論壇閱讀很多內容,實際上昨天我幫助某人檢查了他的腳本爲什麼不能正常工作並找到了解決方案。所以我在本地修改了這個腳本,並且按照它的方式進行了修改,但是在另一個人那邊,其中一個對象無法初始化。VBScript和CreateObject問題

的牽連線就像

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

另一個人告訴刪除WScript的事情,似乎它的工作原理上的問題提問者側。

我首先想到它可能與我身邊的Wscript.exe和那個人身邊的CScript.exe(我的假設)有關,但我在命令行中檢查了這一點,它無論如何都起作用。 所以,我想知道和理解的是爲什麼會發生這種情況? 爲什麼調用CreateObject的腳本適用於「WScript」。但在另一個系統上,您需要刪除該「WScript」。保持它的工作? 謝謝你的時間和答案。 ;) 此致敬意。

回答

2

「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。

+0

我認爲這是一個很好的答案。 – 2012-01-20 11:27:32

+0

謝謝你的回答。 – 2012-02-05 17:35:43