Отладка приложений


         

с этой проблемой несколько дней,


Провозившись с этой проблемой несколько дней, я обнаружил, что мог бы добиться соединения VB-программы с удаленной службой TraceSrv лишь в том случае, если бы в объявлении Trace-объекта не использовал ключевое слово withEvents. Указывая ключевое слово withEvents, я всегда получал ошибку RPC_S_SEC_PKG_ERROR и пребывал в недоумении, пока один из друзей не указал мне, что неправильно установлена защита (security) службы TraceSrv.

Вернувшись "к своим баранам" и еще раз посмотрев, что же происходит, я начал кое-что понимать. Ключевое слово withEvents устанавливает интерфейс iconnectionPoint, который сервер использует для вызова клиента — это, по существу, обратный вызов. Чтобы выполнить обратный вызов клиента, сервер должен иметь корректные полномочия доступа. Когда TraceSrv выполняется на той же машине, что и TraceView, то, не зависимо от того, запущена ли она как локальный сервер или как служба, TraceSrv выполняется под тем же пользовательским идентификатором, что и TraceView. Выполнение TraceSrv на одной машине в качестве удаленного СОМ+-сервера, a TraceView — на другой, было успешным потому, что мне повезло. На обеих машинах, работавших под Windows NT Workstation без контроллера домена, я был зарегистрирован в как "John" с одним тем же паролем. Согласно статье Q158508 Knowledge Base ("Часто задаваемые вопросы по СОМ-безопасности") операционная система Windows NT Workstation "возвращается к режиму согласования имен и паролей учетных записей". Если на двух машинах, работающих под Windows NT Workstation, используются одни и те же ASCII-имена, и учетные записи имеют одни те же пароли, то средства защиты DCOM и других ресурсов NT (например, файловой системы) должны работать так, как если бы вы были действительно зарегистрированы ш этих двух машинах с одной и той же учетной записью".

Когда я, зарегистрировавшись на удаленной машине как "Bob", запускал на ней TraceSrv как удаленный сервер, и пытался соединять с ним TraceView на машине клиента, зарегистрировавшись на ней, как "John", я получал ошибку RPC_S_SEC_PKG_ERROR.

Содержание  Назад  Вперед