2011-08-31 106 views
0

我有一個Windows腳本文件,不再工作。Windows腳本無法找到參考

腳本這個樣子的

<job> 
    <reference object="Some.Component.1" /> 
    <script language="VBScript"> 

x = CreateObject("Some.Component.1") 
MsgBox TypeName(x) 

    </script> 
</job> 

當我運行cscript的腳本或WScript的我得到錯誤

Windows腳本宿主:無法找到此引用類型庫: 一些組件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

難道是版本號已經改變?你可以在ProgID的末尾指定它(正如你所做的那樣)或者作爲一個明確的屬性''參考[object =「progID」| guid =「typelibGUID」] [version =「version」] />'[見這裏](http://msdn.microsoft.com/en-us/library/479dafxb(v = VS.85)的.aspx)。 – 2011-08-31 12:43:10

+0

版本仍然是1.0。試圖明確指出它,但它沒有奏效。 – adrianm

回答

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

​​

。注意,類型庫可以是一個單獨的文件,或者可以被嵌入在DLL。

更多關於regTLib.exe在這裏看到:

+0

謝謝你的回覆。我知道我測試過regsvr32,但我不知道有關regtlib。從那時起我改變了工作,所以我無法測試它。也許它可以幫助別人,所以我將它標記爲答案。 – adrianm