Серверу DCOM не удалось зарегистрироваться - PullRequest
4 голосов
/ 17 июля 2009

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

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

"Сервер {6FC4FDAE-96C8-11D3-9F9C-005004053207} не зарегистрировались в DCOM в требуется тайм-аут. "

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 21 июля 2009

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

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

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

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

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

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

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

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

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

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

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

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

1 голос
/ 13 декабря 2009

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

Временное решение: вручную зарегистрировать серверы DCOM в командной строке, открытой с учетными данными встроенной учетной записи администратора.

1 голос
/ 17 июля 2009

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

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

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

...