Устаревший сервер DCOM на Windows Server 2008 R2

У меня есть устаревший сервер DCOM и клиентское приложение, написанные на Delphi v6. Сервер DCOM в настоящее время настроен для однократного запуска и обслуживания всех клиентов. Основная причина, по которой он запускается один раз, заключается в том, что сервер предоставляет интерфейс для приложения учетных записей и должен войти в систему и может сделать это только один раз для данного имени пользователя.

Теперь наш клиент хочет обновить свой сервер до Windows Server 2008 R2, оставив клиентов на Windows XP, но мне не удалось воспроизвести текущую настройку.

Текущая установка, которую я могу заставить работать на испытательном стенде, немного странная!

  1. Мне нужно настроить параметры DCOM, чтобы разрешить удаленный запуск, или я получаю отказ в доступе на клиенте
  2. Если сервер DCOM еще не запущен, когда клиент пытается подключиться к нему, я получаю сообщение об ошибке выполнения сервера.
  3. Если сервер работает и разрешение на запуск настроено на удаленный запуск, клиент запускает новый экземпляр сервера DCOM, а не использует уже запущенный экземпляр. Затем это вызывает проблемы в приложении учетных записей, поскольку тот же пользователь пытается войти в систему, что не разрешено.
  4. Если я закрою сервер DCOM, работающий на сервере, клиент с радостью будет работать со своим собственным экземпляром. Я не вижу основную форму серверов DCOM, хотя она работает в фоновом режиме (можно увидеть в диспетчере задач)

Я нашел различные статьи, связанные с этой проблемой, но пока ничего не помогло. К ним относятся запуск сервера DCOM от имени администратора, без запуска сервера DCOM от имени администратора, разрешение COM + в брандмауэре, добавление сервера DCOM к брандмауэру, сервера DCOM, расположенного в SysWOW64, использование 32-разрядной версии DCOMCNFG и т. Д.

Теперь не уверен, куда идти ...

Спасибо за любую помощь

Саймон


person Simon Bowyer    schedule 02.05.2012    source источник
comment
Установлены ли в этой системе терминальные службы? Это сильно усложняет ситуацию.   -  person Warren P    schedule 03.05.2012
comment
Привет, Уоррен, Терминальные службы не установлены на этом сервере.   -  person Simon Bowyer    schedule 03.05.2012
comment
У меня были точно такие же проблемы с активацией и безопасностью в Windows Server 2003. Проблемы стали неразрешимыми (не исправляемыми) только после того, как к нему были добавлены службы терминалов. Этот инцидент породил мое глубокое отвращение к DCOM, MSMQ и, по сути, ко всем технологиям Enterprise Microsoft. Такое отвращение сохраняется и по сей день, несмотря на то, что я сертифицированный MCP на Windows Server 2008 R2. Я предлагаю вам зайти на форумы / сообщества / группы новостей Microsoft и найти там бога DCOM.   -  person Warren P    schedule 03.05.2012


Ответы (1)


Разрешения DCOM по умолчанию были изменены в XP SP2 и 2003 SP1. Вам нужно будет правильно настроить, чтобы ваша служба работала должным образом. Обычно, если вы не реализуете сервер DCOM в службе (что не позволяет Delphi из-за ограниченной поддержки DCOM), сервер DCOM запускается при подключении пользователя, и поэтому вам могут потребоваться разрешения на «удаленный запуск». Более того, сервер DCOM может быть запущен в контексте данного пользователя, интерактивного пользователя (этого следует избегать для удаленных клиентов!) Или запускающего пользователя. Какой режим вы используете? - если он установлен на «запускающий пользователь», он всегда будет создавать новый экземпляр. Каким был инстанс вашего сервера до новой ОС? Как реализована его фабрика классов? См. здесь для получения некоторой интересной информации о реализациях DCOM и Delphi.

КСТАТИ:

  • Никогда не запускайте свой DCOM-сервер с правами администратора, если это действительно не нужно. В противном случае вы можете создать брешь в безопасности.
  • Если присутствует брандмауэр, для вызывающих клиентов должны быть открыты как порт конечной точки RPC, так и порты, настроенные для DCOM.
  • Не путайте системные каталоги с вашим приложением. В этом нет необходимости, если ваше приложение работает только там, у вас есть неправильная конфигурация привилегий, и вы не сможете решить эту проблему, правильно разместив файлы, которым они не принадлежат.
person Mad Hatter    schedule 03.05.2012
comment
ограниченная поддержка DCOM? Давным-давно я помню, как пытался найти способ обойти это, и я исправил ситуацию, вызвав CoInitializeSecurity (подробнее здесь: yoy.be/item.asp?i282), но, как я уже сказал, это было эоны назад (т.е. 2006 г.) - person Stijn Sanders; 03.05.2012
comment
Поддержка DCOM ограничена, потому что она в основном написана для API NT / W9x и не поддерживает службы DCOM (без сторонних частично библиотек), а также добавлены многие улучшения DCOM, поскольку NT недоступна в готовой поддержке Delphi. Более-менее, так как D4 очень мало добавилось. - person Mad Hatter; 03.05.2012
comment
Эти моменты кажутся очень общими, тем не менее +1. Считаете ли вы, что проблемы активации на самом деле связаны с проблемами безопасности DCOM (необходимы изменения конфигурации DCOM) или чем-то еще (возможно, проблемы с ролью безопасности домена или компьютера, или требуется другое странное хакерское вмешательство в реестр или профиль группы?). - person Warren P; 03.05.2012
comment
Это общие моменты, потому что, не глядя на конфигурацию и реализацию OP, практически невозможно диагностировать проблему. Когда MS сделала настройки DCOM по умолчанию более строгими, это сломало множество небрежно настроенных приложений DCOM. Еще хуже стало удаление документации DCOM из MSDN. Большинство проблем, которые я вижу при развертывании приложений DCOM, обычно связаны с неправильными настройками конфигурации. - person Mad Hatter; 04.05.2012
comment
Я сконфигурировал сервер аналогично тому, как это было предложено в книге Delphi COM Programming (Eric Harmon). Моя конфигурация, которая у меня сейчас есть: Группа пользователей для управления доступом; Запустите сервер DCOM с помощью переключателя / INSTALL; Я запустил mmc -32 и добавил оснастку для компонентных служб; Я включил DCOM; Для моего сервера DCOM и новой группы пользователей я установил разрешения на запуск для удаленного запуска, локальной активации и удаленной активации; Я установил разрешение доступа на локальный и удаленный доступ; Под удостоверением я выбрал этого пользователя и сейчас пытаюсь ввести имя пользователя и пароль администратора. - person Simon Bowyer; 04.05.2012
comment
Вы должны установить DCOM-сервер с ключом / regserver. / install предназначен для служб, но Delphi не сгенерирует правильную службу DCOM без изменений. В DCOMCnfg также проверяет, какие ограничения установлены. См. Здесь: technet.microsoft.com/en -us / library / cc738214% 28v = ws.10% 29.aspx. Остерегайтесь использования пользователя с высокими привилегиями. Если он работает только как администратор, у него есть некоторые проблемы с разрешениями (например, запись в папки или разделы реестра, которые являются привилегированными). - person Mad Hatter; 04.05.2012