COM-объекты без регистрации на Windows-7 / 64bit - PullRequest
4 голосов
/ 25 августа 2010

Я пытаюсь получить активацию COM-компонентов без регистрации: пример от Microsoft для работы на компьютере под управлением Windows 7 Professional / 64bit.Я скачал демонстрационную программу MSDNRegFreeCOM.msi .

У меня она правильно собирается и работает на моем устройстве разработки XP-32 с использованием VS2008SP1.Но когда я копирую работающую 32-битную демонстрационную программу на мой компьютер с Windows 7, она завершается ошибкой 0x80040154.Эта ошибка означает, что класс не зарегистрирован.Тем не менее, отсутствие явной регистрации этого объекта в Windows является целью данного конкретного com-объекта, поэтому, пожалуйста, не говорите мне регистрировать этот объект в Windows.

Кто-нибудь знает что-нибудь особенное, что должно быть сделано с этимдля windows 7?


РЕДАКТИРОВАТЬ В соответствии с комментариями Кристиана Адама ниже, я использовал внешний файл манифеста (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 Ответ

4 голосов
/ 25 августа 2010

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"

...