【问题标题】:COM security on Windows Server 2008Windows Server 2008 上的 COM 安全性
【发布时间】:2010-08-19 20:52:23
【问题描述】:

我有一个正在注册用于 COM 互操作的 .NET 库。在我的机器上一切正常(windows 7 x64)——我使用 regasm 注册了库,VBScript 可以很好地运行 CreateObject。我注销它并且 CreateObject 失败。正如您所期望的那样。

但是,当我将这个完全相同的库放在我的服务器(Windows Server 2008 x64)上并运行 regasm(表示该库已正确注册)时,我无法让 VBScript 的 CreateObject 实际工作。我不断收到错误

800A01AD(ActiveX 组件无法创建对象)

这是我从 COM 注销库时在本地机器上遇到的确切错误。

我唯一能想到的是,这是一个安全问题。我需要检查 COM 中的 vi 安全性吗?

【问题讨论】:

    标签: c# .net security windows-server-2008 com-interop


    【解决方案1】:

    在 x64 机器上有两个版本的 Regasm.exe。听起来您使用的是 32 位版本,它仅将注册表项添加到注册表的 32 位视图(HKLM\Software\Wow6432Node)。要使其适用于在 64 位模式下运行的代码,您还必须将其注册为 64 位代码。当然,您的 .NET 组件不得对 32 位非托管代码有任何依赖关系。

    64位版本位于c:\windows\microsoft.net\framework64

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

    【讨论】:

    • 我的库被 32 位应用程序调用,所以我怀疑它使用的是 64 位版本的 VBScript 引擎...
    • 好吧,在我的回答中交换 64 和 32。但请先使用这两个版本的 Regasm。
    【解决方案2】:

    你能显示你用来注册 .dll 的完整命令吗?

    根据这里的文章:http://www.osmstudios.com/Display.asp?Page=asp_emaildll

    您应该从命令行运行以下命令:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2014-03-31
      相关资源
      最近更新 更多