Существует множество причин, по которым даже правильно сформированный файл LMHOSTS не помогает в решении проблемы. В этом случае надо «обмануть» NT, вызвав окно командной строки.

В. Мой Microsoft Inter-net Explorer (IE) настроен для хранения паролей, которые я использую для регулярного доступа к Web-серверу. C помощью Microsoft Outlook 2000 я получаю доступ по протоколу POP3 к почтовому ящику, расположенному на сервере провайдера. Однако и IE и Outlook ведут себя не так, как мне бы хотелось. IE предлагает ввести пароль входа при попытке подключиться к WWW, хотя я ожидал, что подключение произойдет автоматически. Вдобавок не удается сохранить в Outlook пароль для доступа к почтовому ящику POP3. Почему так происходит?

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

Сначала нужно остановить службу Protected Storage. Это можно сделать из Control Panel, выбрав ярлык Services. Далее следует вызвать regedt32 и перейти в подраздел HKEY_CURRENT_USERSoftwareMicrosoftPro-tected Storage System Provider. Внутри него находится как минимум один подраздел с именем, совпадающим с SID пользователя (т. е. S-1-5-21-36516332-637091160-1803697834-1001). Смотрите Экран 1. Этот подраздел нужно удалить. Чтобы получить право на удаление, необходимо выделить подраздел и выбрать Permissions из меню Security. Затем следует добавить своей учетной записи право Full Control. Теперь можно удалить подраздел и перезапустить службу Protected Storage.

В. На моем компьютере установлена Windows 2000 Professional. Я часто сталкиваюсь с проблемами совместимости прикладных программ с этой операционной системой. Приложение, которое было установлено на компьютере с Windows 98, прекрасно работает после инсталляции Windows 2000 поверх Windows 98. Но установить его в Windows 2000 не получается: выводится сообщение о том, что требуется загрузить SP4 или более позднюю версию для NT 4.0. На компьютере также установлено приложение для работы с цифровой камерой, подключенной через USB. Эта программа прекрасно работает в системе Windows 98. Я знаю, что Windows 2000 поддерживает работу с USB, система правильно определяет тип камеры и загружает соответствующий ей драйвер. Как «обмануть» приложения, чтобы они не считали Windows 2000 более ранней версией, чем NT или Windows 9x?

О. Подобные проблемы встречаются довольно часто, так как множество приложений и программ для их установки было разработано задолго до появления Windows 2000. Большинство программ установки применяет такие методы проверки версии ОС, для которых Windows 2000 — не более поздняя, а более ранняя версия по сравнению с NT. Многие приложения, формально несовместимые с Windows 2000, будут прекрасно работать, если решить проблему определения версии.

На CD-ROM с NT 4.0 Microsoft поставляет командный файл setwin95.cmd. После его запуска программа исходит из того, что она работает не в NT, а в Windows 95. Эта же идея воплощена Microsoft в утилите Application Com-patibility (apcompat.exe). На Экране 2 показана графическая оболочка утилиты, а сам файл находится на CD-ROM с Windows 2000 в каталоге Support. Утилита Apcompat.exe устанавливается вместе с другими программами поддержки.

Экран 2. Утилита Application Compatibility в Windows 2000.

С ее помощью можно «обмануть» приложение, которое разрабатывалось для предыдущих версий ОС. Приложение будет считать себя совместимым с одной из следующих ОС: Win-dows 2000, NT 4.0 SP5, SP4, SP3 или Windows 9x. Можно даже частично изменить характер взаимодействия приложения с операционной системой. Например, сделать так, чтобы приложение «видело» на дисковом томе не более 2 Гбайт и использовало для хранения временных файлов каталог Temp (как это было до появления Windows 2000) или запретить менеджеру пула памяти Heap Manager выполнять оптимизацию оперативной памяти. Чтобы не запускать утилиту Application Compatibility каждый раз перед выполнением приложения, можно сделать изменения постоянными. В конечном счете приложение можно загрузить из командной строки при помощи утилиты Application Compatibi-lity с различными параметрами.

Формат команды и ее параметры показаны ниже. (Обратите внимание, что пробел между параметрами -v или -x и значениями параметров отсутствует.)

apcompat -? -vVersion Name
      -xProgram Path -d -t -g -k

Где -? выводит список параметров командной строки, -vVersion Name указывает имя версии ОС, которое будет передаваться программе (например, 1 — соответствует NT 4.0 SP3, 2 — соответствует NT 4.0 SP4, 3 - соответствует NT 4.0 SP5, 4 - Windows 98, 5 - Windows 95), -xProgram Path указывает полный путь и имя файла .exe запускаемой программы, -d запрещает работу Heap Manager с областью памяти, выделенной для программы, -t дает указание использовать Temp для хранения временных файлов, -g заставляет приложение правильно определять размер диска, -k сохраняет установки утилиты Application Compatibility. Например,

apcompat -v4 -xc:myappmyapp.exe

запускает приложение myapp.exe из каталога C:myapp. Приложение считает, что оно выполняется в среде Windows 98.

В. Время от времени мне приходится устанавливать резервные контроллеры домена, серверы и рабочие станции NT 4.0, которые связаны с главным контроллером домена медленным WAN-соединением. В момент, когда установка NT переходит в третью фазу (т. е. после загрузки графической оболочки), система выводит сообщение о том, что контроллер домена не найден, и компьютер не может быть включен в домен. Мой файл LMHOSTS содержит следующие строки:

10.10.10.1   MY_PDC #PRE #DOM:MY_DOMAIN
10.10.10.1   «MY_DOMAIN   x1b» #PRE

Я выполнил все рекомендации Microsoft, которые приведены в статье о правилах написания файла LMHOSTS «How to Write an LMHOSTS File for Domain Validation and Other Name Resolution Issues» (http://support.microsoft.com/ support/kb/articles/q180/0/94.asp). Почему же мой компьютер «не видит» контроллер домена, который находится по другую сторону WAN-соединения?

О. Я несколько раз сталкивался с подобными проблемами и нашел способ их решения. Но сначала давайте кое-что уточним. Судя по всему, вы ссылаетесь на статью об установке резервного контроллера домена «How to Install a BDC in a Routed TCP/IP Environment» ().

В этой статье есть одна ошибка. Совершенно справедливо указано, что имя домена в файле LMHOSTS следует заключать в кавычки, и число символов в кавычках должно равняться двадцати. Однако затем приводится пример, в котором имя домена состоит из 10 символов (т. е. DOMAINNAME), далее идет пробел и x1b, итого получается лишь 16 символов (DOMAINNAME x1b). Т. е. в примере, согласно приведенному утверждению, следует добавить еще четыре пробела. Дело в том, что любое имя NetBIOS имеет длину 16 символов. Оно состоит из 15 символов собственно имени, и 16-й символ отводится под суффикс, который внутри кавычек представлен пятью символами x1b.

Суффикс указывает, какие функции выполняет компьютер с таким именем. Главному браузеру домена (Domain Master Browser) присвоен суффикс 1b. Полный список суффиксов NetBIOS и их значений можно найти в статье Microsoft «Net-BIOS Suffixes (16th Character of the NetBIOS Name)» по адресу: http://support.microsoft.com/ support/kb/articles/q163/4/09.asp.

Теперь вернемся к вопросу. Файл LMHOSTS поможет решить проблему лишь в том случае, если он доступен ОС в момент инициализации стека TCP/IP. Если это так, то имя домена и имя главного браузера домена (т. е. PDC) попадут в кэш имен NetBIOS. Это обычная ситуация для правильно настроенного и работающего компьютера. Однако возможны варианты, когда этого не происходит. Например, при установке Windows NT. В этом случае все, что требуется сделать, - это открыть в NT командное окно.

Экран 3. Поиск ошибки в NT Setup с помощью окна командной строки.

Для этого во время настройки TCP/IP-стека следует перейти на закладку WINS и щелкнуть на кнопке Import LMHOSTS. Откроется диалоговое окно Open With, показанное на Экране 3. Нужно щелкнуть правой кнопкой мыши на любом файле, для которого еще не определена связь с программой просмотра, и выбрать пункт меню Open With. Затем щелкнуть на кнопке Other, перейти в папку \%systemroot%system32 и выбрать программу cmd.exe. Флажок Always use this program to open this file выставлять не нужно, так как постоянную ассоциацию создавать не требуется. Далее щелкаем на кнопке OK, и NT открывает командное окно. Фокус в том, что вместо файла открылось командное окно.

Командное окно позволяет провести диагностику и скорректировать настройки. Например, для проверки связи можно пользоваться командами Ping и Tracert. Или можно по команде Nbtstat -R загрузить в кэш NetBIOS имена, определенные в файле LMHOSTS. С помощью команды Nbtstat проверяется наличие в кэше имени PDC и имени домена.

Если нужные утилиты не были записаны на диск во время установки NT, их можно скопировать на дискету с соседнего NT-компьютера.

В. Наши пользователи обожают присваивать файлам длинные имена. Я привык работать с командной строкой, но использовать команду Cd с длинными именами файлов очень неудобно. Например, чтобы перейти в папку C:program filessoms application, нужно в командной строке ввести длиннющую строку Cd «program filessoms application». Что можно придумать, чтобы не вводить длинные командные строки?

О. Я могу дать пару советов по работе с командной строкой в Windows NT и Windows 2000.

Например, для перехода в папку, которая находится на один уровень ниже, не обязательно вводить ее полное имя. Достаточно ввести несколько начальных символов и звездочку (*). Т. е. для перехода в папку Program Files ввести

cd prog*

Такая команда делает текущей ближайшую папку, которая начинается с prog, а это и есть папка Program Files. Случайно можно попасть в другую папку, если их несколько и все начинаются с prog. Поэтому следует вводить уникальную комбинацию символов, соответствующую имени единственной папки.

Еще один совет поможет настроить Explorer так, чтобы в режим командной строки можно было перейти из любой папки. Для этого потребуется утилита, которая называется Command Prompt Here (командная строка). Ее можно найти по адресу: http://www.microsoft.com/ ntworkstation/downloads.

Для установки утилиты следует дважды щелкнуть на выполняемом EXE архивном файле, затем правой кнопкой мыши щелкнуть на появившемся файле doshere.inf, выбрать пункт меню Install. Теперь, если щелкнуть правой кнопкой мыши на любой папке и выбрать пункт меню Command Prompt Here, откроется командное окно. Имя папки будет каталогом по умолчанию. Для того чтобы открыть командное окно, можно в окне папки щелкнуть правой кнопкой мыши на иконке в левом верхнем углу и выбрать Command Prompt Here.

Еще один фокус позволяет в командном окне дополнять частично введенную команду до полной. Например, в командной строке UNIX можно ввести неполное имя файла, нажать клавишу Tab и получить полное имя. В Windows NT и Windows 2000 такой возможности нет, но ее можно добавить. Для этого в реестре следует изменить подраздел HKEY_LOCAL_MACHINESOFTWARE MicrosoftCommand Processor или HKEY_CURRENT_USERSoftware MicrosoftCommand Processor. При помощи программ regedit или regedt32 нужно перейти в любой из подразделов и изменить значение параметра Comple-tionChar на 9 (или добавить этот параметр с типом REG_DWORD, если он отсутствует). Если параметр определен в обоих подразделах, то значение параметра в подразделе HKEY_CURRENT_USER будет иметь приоритет перед HKEY_LOCAL_MACHINE. Теперь при работе с командным окном можно пользоваться клавишей Tab для автоматического дополнения имен файлов.

Рассмотрим еще один способ быстрого ввода имен папок. Он работает только в том случае, если командная сессия открыта в оконном, а не в полноэкранном режиме. Делается это следующим образом. В строке вводится команда, а имя папки буксируется мышкой из окна Explorer. В результате получается то же, что и при использовании клавиши Tab.

В. Windows NT 4.0 (SP4) и все более поздние версии содержат утилиту Setprfdc. С ее помощью можно без настройки файла LMHOSTS указать, какой контроллер домена (DC) является предпочтительным для группы компьютеров. Наш NT-домен охватывает всю страну, и в каждом регионе установлен свой резервный контроллер домена (BDC). Требуется, чтобы компьютеры с Windows 95 использовали при регистрации локальный BDC и можно было бы не настраивать файлы LMHOSTS на каждой машине. Как это сделать?

О. Утилита Setprfdc предназначена только для NT. Можно использовать другие методы контроля аутентификации в домене, например добавить теги #PRE и #DOM в файл LMHOSTS. Но так как вы указали, что этот метод не подходит, рассмотрим другой. Можно установить на компьютерах с Windows 95 способ разрешения имен по M-node. Для этого следует настроить параметры в DHCP или в файле системной политики config.pol, что повлечет за собой изменение параметра реестра, связанного со способом определения имен.

Если клиент не использует WINS-сервер, то для поиска контроллера домена, создания безопасного канала для связи с ним и регистрации пользователя применяются широковещательные сообщения. При посылке запроса клиент включает свой внутренний счетчик времени и ждет ответа от контроллера домена. Если ответ не приходит в течение определенного времени, клиент прекращает ожидание и считает, что контроллер домена отсутствует. Так как время ожидания чрезвычайно мало, возможна ситуация, когда ответ от контроллера домена не будет получен из-за высокой загрузки в сети. Если клиент должен задействовать сервер WINS, то по умолчанию используется режим H-node. В этом случае клиент сначала пробует получить список имен контроллеров домена у WINS, а только потом пытается вести поиск самостоятельно при помощи широковещательных сообщений. В результате возможна ситуация, когда секретный канал будет установлен не с локальным, а с удаленным на несколько маршрутизаторов контроллером домена. Если использовать M-node, то клиент сначала посылает широковещательное сообщение, а уже затем пытается получить имена у WINS. Особенность этого режима в том, что время ожидания ответа на широковещательное сообщение больше, чем в случае, когда WINS не использовался. В результате более вероятно, что на запрос клиента ответит резервный контроллер домена, находящийся в локальной сети. Более подробную информацию можно найти в статье Microsoft «Secure Channel Manipulation with TCP/IP» по адресу: http://support.microsoft.com/ support/kb/articles/q181/1/71.asp. Но надо всегда помнить об особенности механизма разрешения имен в режиме M-node: увеличение трафика широковещательных сообщений может понизить общую производительность сети. Поэтому такой метод больше подходит для небольших локальных сетей филиалов с малым числом компьютеров.

В. При регистрации служащих нашей компании в домене NT используются персональные профили. Особенно это удобно для тех, кто вынужден работать на разных компьютерах. Однако мы стали замечать, что время регистрации и время выхода из системы значительно увеличилось. Я ничего не мог понять до тех пор, пока не догадался проверить размер пользовательского профиля на одном из компьютеров. Для этого потребовалось из Control Panel вызвать приложение System и перейти на закладку User Profiles. Размер пользовательского профиля оказался более 170 Мбайт. Позже выяснилось, что другие пользователи испытывают те же проблемы. Я проверил папки, в которых должны храниться профили пользователей (C:winntprofilesusername), но файлов больших размеров не обнаружил. Непонятно, почему размеры профилей столь велики и как их можно уменьшить?

О. «Раздутые» персональные профили чаще всего вызывают снижение производительности при регистрации или выходе из системы. Разберем вкратце, почему это может происходить.

Как правило, самый большой вклад в «разбухание» профилей вносит папка Temporary Internet Files, которая принадлежит программе Microsoft Internet Explorer (IE). По умолчанию IE располагает эту папку внутри папки профиля пользователя, т. е. C:winntprofilesusername emporary internet files. Постепенно в этой папке накапливается чрезмерное количество данных, и все они должны синхронизироваться с сервером. Т. е. при регистрации пользователя файлы копируются с сервера, а при завершении работы - на сервер. Есть несколько способов исправить положение.

Первое, что можно сделать, это изменить настройки IE и отменить сохранение страниц кэша при завершении работы браузера. В этом случае содержимое папки Temporary Internet Files будет удаляться. Для этого следует выбрать Internet Options из меню View или Tools. Далее выбрать закладку Advanced, перейти в секцию Security и установить переключатель Delete saved pages when browser closed или Empty Temporary Internet Files folder when browser is closed. Такая настройка IE гарантирует удаление из папки кэшированных страниц, но не cookies.

Если такие же настройки нужны на нескольких компьютерах и вы согласны на переустановку IE, то можно определить их как настройки по умолчанию. Это делается с помощью набора программ Internet Explorer Admini-stration Kit (IEAK), Outlook Deploy-ment Kit (ODK) или Microsoft Office 2000 Setup. При использовании IEAK, ODK или Office 2000 Setup нужно обязательно установить дополнительный пункт: During setup, clear the Disable Roaming Cache option. Этот пункт доступен во время установки и находится внутри секции User Profiles, конфигурация System Policies and Restrictions. На первый взгляд такой подход кажется не очень удачным, но специалисты Microsoft в статье «How Not to Save Cached Internet Files with Roaming User Profiles» (находится по адресу: http://support.microsoft.com/ support/kb/articles/q185/2/55.asp) утверждают обратное.

Если не хочется переустанавливать IE, то можно воспользоваться редактором системной политики (SPE) и изменить файл ntconfig.pol так, чтобы кэш-файлы IE очищались. Программы IEAK и ODK поставляются вместе с файлом-шаблоном inetset.adm. В файле установлено несколько параметров, относящихся к IE, в том числе и запрет на сохранение кэша при выходе из программы. Если в программу SPE загрузить шаблон .adm вместе с другими шаблонами (например, winnt.adm, common.adm), то при создании или редактировании профиля пользователя появится новое меню Advanced Settings. В этом меню достаточно отметить кнопку-переключатель Delete saved pages when browser closed (см. Экран 4), и IE прекратит хранение кэшированых страниц в папке Tem-porary Internet Files folder.

Экран 4. Задание режима удаления кэшированных страниц в IE.

Если перечисленное выше не устраивает или хочется более широких возможностей, то можно в файле системной политики указать папки, которые будут удаляться из профиля при его сохранении на сервере. Эта возможность появляется в NT 4.0 после добавления SP4 или более поздней версии. Она устанавливается с помощью файла-шаблона политики winnt.adm. Настройки находятся в секции Windows NTUser Profiles системной политики пользователя. Следует выбрать кнопку-переключатель Exclude directories in roaming profile и ввести названия папок через точку с запятой. Эти папки будут исключены из профиля при его сохранении на сервере. При вводе следует использовать не абсолютные, а относительные имена папок. За корень принимается папка C:winntprofiles. Например, папка Temporary Internet Files находится в корне, поэтому достаточно ввести строку Tem-porary Internet Files. Если же нужно исключить из профиля папку C:winntprofilesusernameapplication datamicrosoftoutlook, то вводится имя Application DataMicrosoftOutlook. Ведущий символ «» опускается.

Eсть и другие папки, влияющие на размер профиля. Это и папка Outlook Personal Storage Folders, содержащая большие .pst-файлы, и различные папки и файлы, сохраненные на рабочем столе компьютера. В этом случае нужно научить пользователей сохранять файлы в другом, более подходящем месте. В программе SPE есть возможность ограничить размер профиля пользователя. Если установленный предел будет превышен при синхронизации профиля и выходе из системы, то пользователь получит сообщение об ошибке.

Выбор способа ограничения размера профиля в большой степени зависит от количества компьютеров, а также от предпочтений службы поддержки. Настройки на большом числе компьютеров рекомендуется изменять с помощью системной политики или метода переустановки. Рассмотренные проблемы в меньшей степени затрагивают Windows 2000, так как система использует более эффективный алгоритм копирования профилей на сервер. И тем не менее лучше убедиться, что размер профиля настолько мал, насколько это возможно.

В. Я несколько раз пытался скопировать профиль пользователя при помощи приложения System (закладка User Profile). И каждый раз получал странное сообщение об ошибке «Copy Profile Error: The operation completed successfully». Профиль не был скопирован, несмотря на сообщение об успешном завершении операции. Как решить подобную проблему?

О. Такая ошибка характерна для систем Windows NT 4.0 с установленным IE 4.01 или IE 4.0. Это связано с правами на раздел реестра, относящегося к службе Protected Storage. Вы можете попробовать переустановить права на подраздел реестра HKEY_LOCAL_MACHINESOFTWARE MicrosoftProtected Storage System ProviderSID. SID - это секретный идентификатор того пользователя, чей профиль нужно скопировать.

Проблема решается установкой прав в программе «редактор реестра». Для этого из меню Security следует выбрать пункт Permissions, и в списке Type of Access установить право на чтение (read) для группы «Администраторы». Теперь копирование профиля должно пройти успешно.

В статье Microsoft, которая называется «Error Message: Copy Profile Error» (ее можно найти по адресу: http://support.microsoft.com/ support/kb/articles/q175/6/67.asp ), описано еще одно возможное решение этой проблемы. Чтобы его применить, придется создать для пользователя новый профиль. И последний вариант — установить IE 5.0 или более поздней версии.

Шон Дейли - редактор журнала Windows NT Magazine и президент компании iNTellinet Solutions, занимающейся консалтингом и сетевой интеграцией. Имеет звание MCSE. С ним можно связаться по адресу: sean@ntsol.com.