Вы можете заменить определение успешной загрузки. Для этого установите HKLMSoftwareMicrosoft Windows NTCurrentVersionWinlogonReportBootOk в 0, напишите свою программу, проверяющую успешность загрузки, и укажите путь к ней в HKLMSystemCurrentControlSetControlBootVerificationProgram. Такая программа должна вызывать API-функцию
Запустив SCM, Winlogon ждет уведомления об интерактивном входе от GINA. Получив такое уведомление и проверив вход (об этом процессе см. в главе 8), Winlogon загружает куст реестра из профиля зарегистрировавшегося пользователя и отображает его на HKCU. Затем он настраивает переменные окружения для данного пользователя, хранящиеся в HKCUEnvironment, и направляет уведомления о входе компонентам, зарегистрированным в HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogon Notify.
Затем Winlogon сообщает GINA запустить оболочку. B ответ на этот запрос Msgina запускает исполняемый файл (или исполняемые файлы), указанный в параметре HKLMSoftwareMicrosoftWindows NT CurrentVersionWinLogonUserinit (несколько исполняемых файлов перечисляются через запятые), который по умолчанию указывает на Windows System32Userinit.exe. Userinit.exe выполняет следующие операции.
1. Обрабатывает пользовательские сценарии, указанные в HKCUSoftware PoliciesMicrosoftWindows SystemScripts, и машинные сценарии входа, заданные в HKLMSoftwarePoliciesMicrosoftWindowsSystem Scripts.
(Так как машинные сценарии выполняются после пользовательских, они могут переопределять пользовательские настройки.)
2. Если политика группы задает какую-либо квоту в профиле пользователя, Userinit.exe запускает WindowsSystem32Proquota.exe для ее применения.
3. Запускает оболочку (или оболочки), указанную в HKCUSoftwareMicrosoftWindows NTCurrentVersion WinlogonShell. Если этого параметра нет, Userinit.exe запускает оболочку (или оболочки), определенные в HKLMSoftwareMicrosoftWindowsCurrentVersionWinlogonShell (по умолчанию – Explorer.exe).
Далее Winlogon уведомляет зарегистрированные провайдеры сетей о входе пользователя. Провайдер сети Microsoft, маршрутизатор многосетевого доступа (Multiple Provider Router, MPR) (WindowsSystem32Mpr.dll), восстанавливает постоянные подключения к сетевому диску и принтерам, установленные пользователем; эти сопоставления хранятся в HCUNetwork и HKCU Printers соответственно. Ha рис. 5-3 показано дерево процессов, которое отображается в Process Explorer при входе до завершения Userinit.
Помимо параметров Userinit и Shell в разделе Winlogon, существует много других разделов в реестре и каталогов, проверяемых и обрабатываемых системными компонентами для автоматического запуска процессов при загрузке и входе. Утилита Msconfig (в Windows XP и Windows Server 2003 это WindowsSystem32Msconfig.exe) показывает образы, сконфигурированные в нескольких местах. Ho утилита Autoruns от Sysinternals
ЭКСПЕРИМЕНТ: утилита Autoruns
Многие пользователи даже не представляют, сколько программ выполняется в процессе их входа. OEM (original equipment manufacturers) часто конфигурируют свои системы с помощью дополнительных утилит, которые выполняются в фоновом режиме и обычно не видны. Чтобы увидеть, какие программы настроены на автоматический запуск на вашем компьютере, запустите утилиту Autoruns; ее можно скачать с сайта
B этом разделе представлены подходы к решению проблем, возможных в процессе запуска Windows из- за повреждения жесткого диска и файлов, отсутствия каких-либо файлов и ошибок в сторонних драйверах. Сначала мы опишем три режима восстановления Windows при возникновении проблем с загрузкой: последняя удачная конфигурация, безопасный режим и консоль восстановления (Recovery Console). Затем мы расскажем о наиболее распространенных проблемах при загрузке, об их причинах и способах устранения.
Последняя удачная конфигурация (last known good, LKG) – полезный механизм для возврата системы, рухнувшей в процессе загрузки, в загружаемое состояние. Поскольку параметры системной конфигурации хранятся в HKLMSystemCurrentControlSetControl, конфигурация драйверов и сервисов – в HKLMSystem CurrentControlSetServices, изменения этих частей реестра могут привести к тому, что система станет незагружаемой. Например, если вы установили драйвер устройства с ошибкой, из-за которой происходит крах системы при загрузке, то можете нажать клавишу F8 в момент загрузки и выбрать из меню последнюю удачную конфигурацию. Система отмечает набор управления, использовавшийся при загрузке как неудачный, устанавливая параметр Failed в HKLMSystemSelect и заменяя значение параметра HKLM SystemSelectCurrent на значение параметра HKLMSystem SelectLastKnownGood. Она также обновляет символьную ссылку HKLMSys-temCurrentControlSet так, чтобы она указывала на набор управления Last- KnownGood. Поскольку для нового драйвера нет подраздела в разделе Services набора управления LastKnownGood, система успешно загрузится.
Наиболее распространенная причина, по которой системы Windows становятся незагружаемыми, заключается в том, что какой-то драйвер устройства приводит к краху при загрузке. Поскольку со временем программно-аппаратная конфигурация системы может измениться, скрытые до этого ошибки в драйверах могут проявиться в любой момент. Windows предоставляет администратору способ решения подобных проблем: загрузку в
Нажав клавишу F8 в начале загрузки Windows 2000, вы открываете дополнительное загрузочное меню, в котором присутствуют три варианта загрузки в безопасном режиме: Safe Mode (Безопасный режим), Safe