2010-02-11 89 views
3

我試圖獲得一個Windows腳本組件在x64開發機器上工作。在x32位上工作良好。但似乎無法讓它運行,我對JScript和VBScript都有同樣的問題。在Windows 7上創建簡單的「Windows腳本組件」問題

這是最簡單的wsc組件。它所做的只是在消息框中彈出「Hello」。如果將下面的snippit保存到名爲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。 (3,1)Microsoft VBScript運行時錯誤:ActiveX組件無法創建對象:'TestScript.Lib'「

這在32位XP上運行得非常好。 任何人都有什麼想法可能是錯的?

非常感謝 Noel。

回答

3

註冊從資源管理器的Wndows上下文菜單中WSC,一切都在64位工作得很好,我的Windows 7

我從32位命令提示符下運行的問題,還有我不得不重新註冊REGSVR32的WSC從%windir%\sysWOW64,然後從64或32的命令提示符運行時,它運行得很好用的Cscript.exe,兩個64位和32位的版本。

你肯定當你註冊WSC,您使用的REGSVR32從%windir%\sysWOW64文件夾?

有REGSVR32的兩個版本,一個32位(SYSWOW64),一個64位(system32)下他們兩個命名REGSVR32。

困惑?加入我們其餘的人:)

這裏有一個亮點在64位Windows的一些陷阱一個很好的鏈接:All the same yet very different

+0

當時,使用WOW64文件夾中regsvr32的權威版本解決了問題。 – Bigtoe 2010-02-11 14:34:46

0

您需要確保您使用32位版本的WScript或CScript來運行它。

默認情況下,它將以64位版本運行,並且不能加載32位組件。

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

發現我添加了一個新的註冊表項與註冊表編輯器: -

HKEY_CLASSES_ROOT\VBSFile\Shell\Open32\Command

,並給它的默認值: -

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

這給了我一個VBS f的上下文菜單上Open32進入ILE。

對於CScript將執行你需要確保路徑CSript得到SysWow64文件夾中的版本。

+0

我用純64位註冊1日試了一下,因爲所有的都是64位。無論如何,我註銷組件註冊regsvr32,它運行以下「C:\ Windows \ SysWOW64 \ cscript.exe C:\ test.vbs」,仍然有同樣的問題。 – Bigtoe 2010-02-11 13:17:31

+0

@Bigtoe:嗯......按照您在Server 2008 x64上發佈的方式工作。 – AnthonyWJones 2010-02-11 14:21:43