Попытка создать экземпляр локального COM-сервера .NET завершается с ошибкой 0x80080005 (CO_E_SERVER_EXEC_FAILURE).C#

Место общения программистов C#
Ответить
Anonymous
 Попытка создать экземпляр локального COM-сервера .NET завершается с ошибкой 0x80080005 (CO_E_SERVER_EXEC_FAILURE).

Сообщение Anonymous »

У меня есть саморегистрирующийся локальный .NET COM-сервер x64 для Windows, написанный на C#, и простой COM-клиент, написанный на C++.

Репозиторий решений

Сервер создает все необходимое записи реестра и регистрирует класс COM с помощью реализации IClassFactory. Клиент вызывает CoCreateInstance для класса COM и интерфейса, который возвращает CO_E_SERVER_EXEC_FAILURE. Ошибка регистрации журнала событий Windows с кодом события 10010 (сервер не зарегистрировался в DCOM в течение требуемого времени ожидания).
Записи реестра COM-сервера:

Код: Выделить всё

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{467e7566-bef4-4138-a619-035d3171afcf}\1.0
@ = NetComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{467e7566-bef4-4138-a619-035d3171afcf}\1.0\0\win64
@ = C:\inetpub\wwwroot\netcomserver\ComInprocServer\lib\NetComServer.tlb
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{467e7566-bef4-4138-a619-035d3171afcf}\1.0\FLAGS
@ = 8
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{467e7566-bef4-4138-a619-035d3171afcf}\1.0\HELPDIR
@ = C:\inetpub\wwwroot\netcomserver\ComInprocServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{e62a1cb0-86a7-40ae-afe4-75562c32a498
@ = IComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{e62a1cb0-86a7-40ae-afe4-75562c32a498}\ProxyStubClsid32
@ = {00020424-0000-0000-c000-000000000046}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{e62a1cb0-86a7-40ae-afe4-75562c32a498}\TypeLib
@ = {467e7566-bef4-4138-a619-035d3171afcf}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{e62a1cb0-86a7-40ae-afe4-75562c32a498}\TypeLib
Version = 1.0
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}
@ = NetComServer.ComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}
AppID = {c6819a04-046e-4ea2-9750-949760cb26f9}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}\LocalServer32
@ = C:\inetpub\wwwroot\netcomserver\ComLocalServer\ComLocalServer.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}\ProgId
@ = NetComServer.ComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}\Version
@ = 1.0
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{c6819a04-046e-4ea2-9750-949760cb26f9}\TypeLib
@ = {467e7566-bef4-4138-a619-035d3171afcf}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\NetComServer.ComServer
@ = NetComServer.ComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\NetComServer.ComServer\CLSID
@ = {c6819a04-046e-4ea2-9750-949760cb26f9}
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{c6819a04-046e-4ea2-9750-949760cb26f9}
@ = NetComServer
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{c6819a04-046e-4ea2-9750-949760cb26f9}
AccessPermission =
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{c6819a04-046e-4ea2-9750-949760cb26f9}
LaunchPermission =
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{c6819a04-046e-4ea2-9750-949760cb26f9
RunAs = Interactive User
Я установил следующие разрешения DCOM:



Учетная запись
Разрешения




BUILTIN\Администраторы
локальный доступ, удаленный доступ, выполнение локально, выполнение удаленно, активация локально , активировать удаленный


NT AUTHORITY\SYSTEM
локальный доступ, удаленный доступ, выполнить локально, выполнить удаленно, активировать локально, активировать удаленно


SELF
локально доступ, удаленный доступ, выполнить локально, выполнить удаленно, активировать локально, активировать удаленно


NT AUTHORITY\LocalService
локальный доступ, выполнение локально, активация локально


NT AUTHORITY\Interactiveлокальный доступ, выполнение локально, активация локально


BUILTIN\Users
локальный доступ, выполнение локально, активация локально



Я также пытался несколько раз вызвать CoCreateInstance и установить ожидание потока локального сервера. Но это не дало никакого эффекта.

Есть идеи?


Подробнее здесь: https://stackoverflow.com/questions/790 ... -0x8008000
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»