Приложению .NET 6.0 не удается использовать COM-объект на Windows Server 2018.C#

Место общения программистов C#
Ответить
Anonymous
 Приложению .NET 6.0 не удается использовать COM-объект на Windows Server 2018.

Сообщение Anonymous »

Я разработал приложение службы Windows в .NET Framework 4.8, которое управляет очередью процессов. Во время выполнения служба запускает другой процесс, который внутренне вызывает COM-объект, используя Activator.CreateInstance(type). Если права настроены неправильно, то при вызове функции в запущенном процессе получаю следующую ошибку:

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

Retrieving the COM class factory for component with CLSID {88FAF7D3-0C9D-4FFE-BD48-794D1E43DD52} failed due to the following error: 80080005 Server execution failed (0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
Конфигурация, работающая в Windows 10/11
Я уже открывал тему по вопросу решения проблемы в прошлое здесь: приложение .NET 6.0 не может использовать COM-объект при запуске из службы Windows после выхода пользователя из системы.
После некоторых проб и ошибок я нашел работающее решение для Windows 10/11. :
  • В Сервисах в свойствах моей службы -> вкладка Вход -> Выберите
    локальную учетную запись пользователя (USER< /em>).
  • В Службы компонентов (dcomcnfg) → DCOM
    Config
    Свойства для COM-объекта (CLSID
    {88FAF7D3-0C9D-4FFE-BD48-794D1E43DD52}):
  • Вкладка «Общие» : установите для уровня аутентификации значение «Нет».
  • Вкладка «Идентификация»: выберите «Следующий пользователь» и укажите учетные данные для USER.
    Вкладка «Безопасность»: настройте разрешения: добавьте USER и предоставьте локальный запуск/активацию, удаленный запуск/активацию и полный доступ.
При такой настройке процесс, запущенный службой, без проблем взаимодействует с COM-объектом.
Проблема в Windows Server 2018< /strong>
Мой рабочий сервер клиента использует Windows Сервер 2018. Применение той же конфигурации не работает, и снова появляется ошибка «Извлечение фабрики классов COM».
Кроме того, средство просмотра системных событий регистрирует следующую ошибку:

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

The server {88FAF7D3-0C9D-4FFE-BD48-794D1E43DD52} did not register with DCOM within the required timeout.
Когда я меняю идентификатор COM-объекта на «Интерактивный пользователь», процесс работает без ошибок. Это указывает на проблему с разрешениями пользователя USER на сервере.
Вопрос[/b]
Каковы могут быть различия в конфигурации между Windows 10? /11 и Windows Server 2018, которые вызывают эту проблему с разрешениями?
Существуют ли дополнительные политики или конфигурации безопасности в Windows Server 2018, которые могут ограничить доступ к DCOM или COM-объектам?
Какие еще настройки следует проверить или настроить? чтобы позволить USER правильно получить доступ и создать экземпляр COM-объекта?
Любые советы или идеи будут очень признательны!

Подробнее здесь: https://stackoverflow.com/questions/792 ... erver-2018
Ответить

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

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

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

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

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