TraceSrv и DCOMCNFG
Для того чтобы разрешить доступ к TraceSrv через сеть, не следует запускать ее как службу, (т. к. после запуска TraceSrv работает как удаленный СОМ+-сервер). Для отладки такая гибкость очень удобна, потому что, запустив TraceSrv в отладчике, можно наблюдать за присоединением к ней клиентов, а при необходимости выполнять и отладку. Мне удобнее всего было, когда и клиентское приложение, и TraceSrv выполнялись под отладчиками на своих машинах. Когда какое-то из приложений достигает точки прерывания, следует приостановить и другое (чтобы избежать любых возможных проблем с тайм-аутами). Я всегда компилировал Visual Basic-клиент до уровня "родного" кода и запускал его под отладчиком Visual C++. Эта тактика гарантировала, что по достижении клиентом точки прерывания он "намертво" останавливается в отладчике. Причина, по которой нельзя остановить клиент, выполняющийся под VB-отладчиком, заключается в том, что с TraceSvr на самом деле соединяется не отлаживаемое приложение, а сам VB-отладчик.
Для того чтобы использовать TraceSrv через сеть, нужно выполнить программу DCOMCNFG.EXE, корректно прописывающую данные о ней в реестр. Первое, что нужно сделать — выполнить для своей машины установку СОМ+-СВОЙСТБ по умолчанию. Перед изменением СОМ+-свойств необходимо проверить с сетевым администратором умалчиваемые СОМ+-свойства в сетевом окружении всей фирмы. Если вы работаете в небольшой сети и обладаете привилегиями суперпользователя, то можно применить установки, перечисленные в табл. 11.1 и, наилучшим образом работавшие на всех машинах, на которых я тестировал TraceSrv.
Таблица 11.1. Умалчиваемые установки DCOMCNFG
На вкладке Default Properties в DCOMCNFG |
Enable Distributed COM Установлен (флажок) On This Computer |
Default Authentication Level Connect |
Default Impersonation Level Identify |
На вкладке Default Security в DCOMCNFG.EXE |
Default Access Permissions Everyone (Bee) Allow Access (Доступ разрешен) INTERACTIVE Allow Access NETWORK Allow Access SYSTEM Allow Access |
Default Launch Permissions Administrators Allow Launch (Администраторы) (Запуск разрешен) Everyone Allow Launch INTERACTIVE Allow Launch NETWORK Allow Launch SYSTEM Allow Launch |
Default Configuration Administrators Full Control Permissions (Полное управление) CREATOR OWNER Full Control Everyone Read (Чтение) INTERACTIVE Special Access (Специальный доступ. Включены все значеия за исключением Create Link, Write DAC и Write Owner) |
SYSTEM Full Control |
После регистрации TraceSrv ( либо как части построения, либо с ключом -RegServer командной строки) запустите DCOMCNFG, выберите TraceSrv (или Trace Class в Windows 98) и нажмите кнопку Properties. Я изменял установки только на вкладке Location. Для того чтобы TraceSrv выполнялась только на локальной машине, установите флажок Run Application On This Computer и сбросьте другие. Если требуется выполнять TraceSrv только на другой машине, то включите флажок опции Run Application On The Following Computer и укажите сервер. (Обратите внимание, что утилита DCOMCNFG позволит поместить на панель имя текущего компьютера, но тогда она не будет создавать сервер.) Чтобы избежать многих неприятностей, дважды проверьте, что все опции на вкладке Security установлены для использования по умолчанию.
Вообще-то не рекомендуется изменять установки в DCOMCNFG — параметры безопасности (security) и идентичности (identity), но если вы это сделали и TraceSrv больше не запускается, выполните утилиту из командной строки с ключом -unRegServer — реестр будет очищен, и можно регистрировать TraceSrv заново (см. выше). Автоматическая регистрация (registration) и "выписка" (unregistration) — удобные свойства ATL.
Теперь вы знаете, как проектировалась, строилась и устанавливалась TraceSrv, и, вероятно, думаете, что эта тема исчерпана. Сначала я тоже так думал, но затем, когда уже начал работать с TraceSrv, обнаружил некоторые действительно неприятные ошибки.