2010-08-19 53 views
0

我有一個.NET庫,我正在註冊COM互操作。一切工作正常我的機器上(Windows 7 64位) - 我註冊庫使用regasm和VBScript可以運行CreateObject就好了。我註銷它並且CreateObject失敗。就像你所期望的一樣。但是,當我將這個完全相同的庫放在我的服務器(Windows Server 2008 x64)上並運行regasm(它說庫已正確註冊)時,我無法讓VBScript的CreateObject實際工作。我不斷收到一個錯誤Windows Server 2008上的COM安全性

800A01AD(ActiveX組件無法創建對象)

這是確切的錯誤我得到我的地方框,當我從註銷COM庫。

我唯一能想出的就是這是一件安全的事情。我需要在COM中檢查VI安全性?

回答

2

有在x64機器上Regasm.exe的兩個版本。聽起來就像您使用的是32位版本,它只是將註冊表鍵添加到註冊表(HKLM \ Software \ Wow6432Node)的32位視圖中。要使它適用於以64位模式運行的代碼,您必須也可以將其註冊爲64位代碼。當然,你的.NET組件不能對32位非託管代碼有任何依賴關係。

的64位版本位於c:\ Windows \ microsoft.net \ framework64

或者使用VBScript引擎的32位版本。

+0

我的庫被一個32位應用程序調用,所以我懷疑它使用的是64位版本的VBScript引擎...... – hackerhasid 2010-08-20 20:20:21

+0

那麼,在我的答案中交換64和32。但在使用之前先使用兩個版本的Regasm。 – 2010-08-20 20:25:11

1

你可以顯示你用來註冊.dll的完整命令嗎?

根據這裏的文章:​​

你應該在命令行中運行以下命令:

regasm <location of file from the root> /tlb:<name of DLL>.dll 

gacutil -i <location of file from the root> 
相關問題