Сервер DCOM не смог зарегистрироваться

Я получаю эту ошибку

Источник: DCOM
Event_ID: 10010

«Сервер {6FC4FDAE-96C8-11D3-9F9C-005004053207} не зарегистрировался в DCOM в течение требуемого времени ожидания».

Это для конкретного исполняемого файла, который при запуске как локальная система работает нормально, но при запуске под не встроенным администратором дает сбой. Мне нужно, чтобы exe запускался под не встроенным администратором.

В настоящее время я получаю эту проблему на машине Win 2k3 с Citrix.

Однако я и раньше сталкивался с этой проблемой на машине XP.

Есть какие-нибудь советы по решению проблемы?


person Ganesh R.    schedule 17.07.2009    source источник


Ответы (3)


Поскольку я не совсем понимаю контекст ... Вот несколько советов, которые помогут вам решить проблемы ... Это помогает иметь права администратора как на исходном, так и на целевом компьютерах ... (по крайней мере, для настройки и проверки)

DCOM может сбивать с толку. При работе с DCOM через границы компьютеров проблема, скорее всего, связана с безопасностью из-за конфликта и / или отсутствия учетных данных, брандмауэров и настроек DCOM для локального компьютера и приложения. Что касается принципа 80/20 ... вот несколько простых правил, которые помогут вам приблизиться.

Во-первых, сделайте безопасность видимой: запустите SecPol.MSC на исходном компьютере, найдите локальные политики / политику аудита и включите аудит для каждого типа событий. Вам следует сделать это на целевой машине.

Увеличьте также ведение журнала событий DCOM. Следуйте этим инструкциям http://support.microsoft.com/kb/892500.

Во-вторых, измените настройку рабочей группы по умолчанию, которая, как известно, распространяется по всему DCOM. Убедитесь, что простой общий доступ к файлам (также известный как гостевая аутентификация) отключен как на исходном, так и на целевом компьютерах. Если оба находятся в домене, вероятно, он отключен. В противном случае ... secpol.msc \ security settings \ security options \ network access: Совместное использование в качестве модели безопасности для локальных учетных записей (установлено классическое значение)

В-третьих, разобраться в требуемой безопасности ...

Если обе машины находятся в разных доменах или одна (или обе находятся в рабочей группе), необходимо понимать требуемую общую безопасность; то есть учетные данные должны быть общими или синхронизированными на каждой машине. То есть для входа в систему, запускающего процесс на исходном компьютере, идентичные учетные данные должны существовать на целевом компьютере. Для обоих в одном домене не беспокойтесь, так как учетные данные на основе домена для одного компьютера будут такими же, как и для другого.

В-четвертых, уберите брандмауэр, если можете.

Временно отключите его .. но только если это безопасно. В противном случае предположите, что для портов netbios и ваших приложений имя exename (135 / 139udp). Используемые порты являются предположением; т.е. это может быть не так.

В-пятых, пока он не стал слишком сложным ... Просто попытайтесь вызвать ошибку (запустите программу) и просмотрите журналы системы и безопасности на обеих машинах. Если это проблема безопасности, она будет торчать, как больной палец, и вы можете отрегулировать ее соответствующим образом.

В противном случае dcomcnfg будет вашим другом. Параметры DCOM для конкретного компонента разрешаются в следующих случаях: КОД ВЫПОЛНЕН, НАСТРОЙКИ ПРОГРАММЫ и НАСТРОЙКИ МАШИНЫ ПО УМОЛЧАНИЮ. Dcomcnfg поможет вам решить два последних вопроса. Вы можете найти более конкретные (но упрощенные) направления на http://www.opcfoundation.org/DownloadFile.aspx?RI=326

Последующие действия, если вы застряли ....

person CMB    schedule 21.07.2009
comment
Спасибо за предложение, попробую. - person Ganesh R.; 21.07.2009

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

Что касается вашей конкретной проблемы, причиной этого сообщения об ошибке является слишком долгий запуск сервера, задерживающий вызов CoRegisterClassObject до истечения тайм-аута. Я бы поискал причину проблемы при запуске вашего сервера, прежде чем изучать COM. Проверьте все выполняемые вами инициализации (конструкторы глобальных переменных и т. Д.) И убедитесь, что не генерируется исключение или что-то в этом роде. Смена пользователя может привести к тому, что некоторые каталоги или кусты реестра станут недоступными, что может нарушить инициализацию.

Я бы сначала отслеживал активность сервера с помощью ProcMon. Это упростит поиск любых проблем, связанных с отказом в доступе, а также покажет вам соответствующую трассировку стека. Если требуется отладка, вы можете подключить отладчик, как только запускается exe-файл, следуя эти инструкции. Наконец, если проблема возникает на машине без VS, вы можете вместо этого использовать WinDBG для отладки процесса.

person eran    schedule 17.07.2009

В моем случае XP на моей машине была модифицирована ИТ-специалистами моей компании. Таким образом, у них была какая-то групповая политика, запрещающая доступ к определенным настройкам DCOM даже для группы администраторов.

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

person Ganesh R.    schedule 13.12.2009