regsvr32 не создает записей в реестре - PullRequest
5 голосов
/ 25 июня 2011

У меня проблема при попытке зарегистрировать DLL. Моя ОС - Windows 7 (x64).

Я делаю это двумя разными способами:

1) Использование regsvr32. Я получаю сообщение «DllRegisterServer ... successedeed», тем не менее я не могу найти свой CLSID в реестре. (И я получаю сообщение об ошибке «Класс не зарегистрирован» при попытке создать набор компонентов с этим CLSID). В этом случае я знаю, что DllRegisterServer никогда не вызывается (потому что я создаю текстовый файл в начале этой функции, и он не создан).

2) Явно загрузите мою DLL и вызовите DllRegisterServer. В этом случае DllRegisterServer возвращает S_OK, но я все еще не могу найти свой CLSID в реестре и получить ошибку «Класс не зарегистрирован».

Я уверен, что код правильный (потому что он не работает только на моей ОС), поэтому кажется, что проблема в ОС. Кто-нибудь сталкивался с такой проблемой?

Ответы [ 3 ]

1 голос
/ 25 июня 2011

http://msdn.microsoft.com/en-us/library/aa384232(v=vs.85).aspx должен объяснить это

В зависимости от того, является ли ваша DLL 32-битной или 64-битной, ключи реестра создаются в разных местах

0 голосов
/ 12 июля 2013

Запустите инструмент командной строки от имени администратора, а затем выполните команду register regsvr32

0 голосов
/ 15 сентября 2011

Только что решил ту же проблему. Я вручную добавил к существующему 32-битному COM новый интерфейс, реализацию (MyNewClass) и файл rgs. Но когда я успешно зарегистрировал свой COM, используя SysWow64 \ regsvr32.exe, я заметил, что мой ProgId / CLSID не отображается в HKCR \ CLSID или HKCR \ Wow6432Node \ CLSID

Итак, на самом деле я пропустил несколько вещей:

  1. Мне пришлось добавить OBJECT_ENTRY в BEGIN_OBJECT_MAP в файле MyApp.cpp
  2. и добавьте DECLARE_REGISTRY_RESOURCEID (IDR_xxx) в файл MyNewClass.h

resource.h

определить IDR_xxx 105

ExistingCom.rc

IDR_xxx ОТКЛЮЧЕНО РЕГИСТРАЦИЯ "MyNewClass.rgs"

...