2010-08-19 93 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> 
相关问题