Сведения о вопросе

Electro Full

19:35, 28th August, 2020

Теги

security   windows-xp   dcom    

DCOM: CoCreateInstanceEx возвращает E_ACCESSDENIED

Просмотров: 494   Ответов: 5

Я работаю над приложением DCOM с сервером и клиентом на двух машинах, на обеих из которых работает WinXP с пакетом обновления 2. На обеих машинах я вошел в систему с одним и тем же именем пользователя и паролем.

Когда клиент на одной машине вызывает CoCreateInstanceEx, прося другую машину запустить серверное приложение, он возвращает E_ACCESSDENIED.

Я попытался войти в свойства компонентов серверного приложения в dcomcnfg и дать всем полные разрешения на все, но это не помогло.

Что мне нужно сделать, чтобы этот призыв увенчался успехом?

Update: когда серверное приложение работает на коробке Windows 2000, я не получаю эту ошибку; CoCreateInstanceEx возвращает S_OK.



  Сведения об ответе

lats

07:12, 21st August, 2020

Если PCs не являются членами одного и того же домена, необходимо также предоставить запуску & права доступа к "ANONYMOUS LOGON". "Everyone" не включает в себя это.


  Сведения об ответе

ASSembler

15:38, 14th August, 2020

Правильно, если ваш уровень аутентификации установлен по умолчанию. Какой уровень аутентификации установлен в настройках по умолчанию? Просто из интереса. (хотя тот факт, что он работает с коробкой 2000, вероятно, делает это излишним)

EDIT:

Кроме того: я, кажется, помню, что делал много перезагрузки, когда я играл/работал с DCOM, так что, возможно, быстрая перезагрузка обеих машин, когда вы довольны настройками dcomcnfg, тоже не будет идти вразнос.


  Сведения об ответе

lourence

04:55, 29th August, 2020

Нужно проверить три вещи:

1) вернитесь к dcomcnfg и убедитесь, что не только безопасность доступа, но и раздел "launch permissions" содержит соответствующие пользователи или группы безопасности.

2) Убедитесь, что уровень аутентификации установлен на что-то другое, кроме "None"

3) Также проверьте, что расположение на диске, в котором находится компонент, действительно доступно учетной записи, настроенной в заданных вами разрешениях безопасности.

EDIT:

Еще один вопрос: Вы тоже сначала звоните CoInitialiseSecurity()? Это мне очень нравится!

EDIT2:

На основе вашего обновления: попробуйте полностью удалить брандмауэры на обеих машинах XP и посмотрите, имеет ли это значение. Возможно,вам придется явно пропустить DCOM.


  Сведения об ответе

SSESION

10:45, 9th August, 2020

У меня была точно такая же проблема. Проблема возникает на машинах с XP SP2+ OS или более поздними версиями.

Я решил ее с помощью следующих шагов:

  1. Убедитесь, что клиентский и серверный компьютеры находятся в одном домене.

  2. Вы должны использовать одного и того же пользователя на обоих компьютерах, или, если вы хотите использовать разных пользователей в клиенте и сервере, вам нужно убедиться, что и клиент, и серверные пользователи имеют привилегии на обоих компьютерах (в частности, убедитесь, что они являются членами группы распределенных пользователей COM.

  3. откройте Componenet services MMC (запустите dcomcnfg).

  4. Перейдите в раздел Мой Компьютер- > Свойства - >свойства по умолчанию и убедитесь, что уровень олицетворения по умолчанию равен "Identify"

  5. Перейдите на вкладку Безопасность COM, в разделе Разрешения на доступ и разрешения на запуск и активацию перейдите к разделу изменение ограничений и добавьте разрешения на локальный и удаленный доступ для пользователей клиента и сервера вашего приложения COM

  6. Убедитесь, что у вас есть исключение брандмауэра в порту 135 для вашего приложения...

Я надеюсь, что это поможет вам!


  Сведения об ответе

COOL

00:00, 6th August, 2020

Кстати, каков вкус вашей коробки Windows 2000? Профессионал, Сервер, Adv-Сервер...

Кроме того, есть ли разница между членством в домене между этими двумя (один на домене, другой нет, разные домены и т. д...?)

Еще одна вещь-DCOM ошибок будет появляться в журнале системных событий время от времени - особенно для создания объекта-вы проверяли там подсказки?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться