Windows-7 / 64bit上的免注册COM对象

时间:2010-08-25 13:33:38

标签: c++ com windows-7

我正试图让Microsoft的Registration-Free Activation of COM Components: A Walkthrough示例在Windows 7 Professional / 64bit计算机上运行。我已经下载了演示程序MSDNRegFreeCOM.msi

我使用VS2008SP1在我的XP-32开发盒上正确构建和运行。但是,当我将工作32位演示程序复制到我的Windows 7机器时,它失败并出现0x80040154错误。此错误表示该类未注册。但是,没有用Windows显式注册此对象是这个特定com对象的重点,所以请不要告诉我在Windows中注册此对象。

是否有人知道在Windows 7中需要做些什么特别的事情?


EDIT Per Cristian Adam在下面评论,我一直在使用外部清单文件(client.exe.manifest)。但是,当我从示例中复制一个时,它对我不起作用。代码是 -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" 
       manifestVersion="1.0">
       <assemblyIdentity
           type = "win32"
           name = "client"
           version = "1.0.0.0" />
     <dependency>
        <dependentAssembly>
                    <assemblyIdentity
                         type="win32"
                         name="SideBySide"
                         version="1.0.0.0" />
        </dependentAssembly>
     </dependency>
 </assembly>

1 个答案:

答案 0 :(得分:4)

Windows 7首先读取内部清单文件,然后再读取外部清单。 Windows XP则反过来。

http://blogs.msdn.com/b/junfeng/archive/2009/05/11/internal-manifest-vs-external-manifest.aspx

将外部清单合并到内部清单中可以通过运行(在“Visual Studio 2008命令提示符”窗口中)来完成:

mt.exe -nologo -manifest client.exe.manifest -updateresource:"client.exe;#1"