COM-серверы регистрируются одинаково в 32-битных 64-битных операционных системах.Этот вопрос связан с саморегистрацией, наиболее простым способом регистрации COM-сервера - запросом у сервера обновить реестр HKLM / HKCR соответственно.
Поскольку вы не можете запустить DLL напрямую, вы используете помощник regsvr32
приложение.Короче говоря, выглядит, является ли DLL 32- или 64-битной и использует соответствующую версию приложения.Затем он загружает DLL и передает управление для регистрации.
EXE COM-серверы EXE могут запускаться напрямую, поэтому вы должны передать им параметры / regserver или / unregserver.
Методыдействительно для 32- и 64-разрядных COM-серверов, для 32- и 64-разрядных операционных систем.
Дополнительные сведения - Самостоятельная регистрация :
Еслисервер упакован в модуль DLL, DLL должна экспортировать функции DllRegisterServer и DllUnregisterServer.Любое приложение, которое хочет дать серверу команду зарегистрировать себя (то есть все его CLSID и идентификаторы библиотек типов), может получить указатель на DllRegisterServer через функцию GetProcAddress.В DllRegisterServer библиотека DLL создает все необходимые записи реестра, сохраняя правильный путь к библиотеке DLL для всех записей InprocServer32 или InprocHandler32.
Когда приложение желает удалить компонент из системы, оно должно отменить регистрацию этого компонента с помощьювызывая DllUnregisterServer.В рамках этого вызова сервер удаляет именно те записи, которые он ранее создал в DllRegisterServer.Сервер не должен слепо удалять все записи для своих классов, потому что другое программное обеспечение может хранить дополнительные записи, такие как ключ TreatAs.
Если сервер упакован в EXE-модуль, приложение, желающее зарегистрировать сервер, запускаетсясервер EXE с аргументом командной строки / RegServer или -RegServer (без учета регистра).Если приложение хочет отменить регистрацию сервера, оно запускает EXE с аргументом командной строки / UnregServer или -UnregServer.Саморегистрация EXE обнаруживает эти аргументы командной строки и вызывает те же операции, что и DLL в DllRegisterServerand и DllUnregisterServer, соответственно, регистрируя путь к своему модулю в LocalServer32 вместо InprocServer32 или InprocHandler32.