Кто бы чего не говорил, но операционная система Windows XP, зарекомендовала себя как достаточно надежная (при надлежащем отношении). Моя копия Windows XP SP1, в последующем обновленная до SP2, работает без сбоев вот уже практически год. Не буду рассказывать, какое количество материалов по оптимизации ОС я прочитал, и какое количество различных tweak-программ испробовал. Многие методы и приемы действительно оказались полезными, другие же рассматривались как достаточно спорные.
В результате этих экспериментов система работает на моем не самом современном по сегодняшним меркам компьютере, быстро, стабильно и загружается скорее, чем у многих обладателей современного железа. Все бы было хорошо, но вот в последнее время я начал замечать, что компьютер стал медленно выключатся. Сначала я не обращал на это особого внимания, объясняя это тем, что компьютер интенсивно использовался по 10-15 часов в день (вроде большое количество фоновых программ, очистка памяти и т. д. и т. п.) Но вот эта проблема стала возникать все чаще, а время отключения могло доходить до 5 минут. Решив, что дальше так жить нельзя я просмотрел журнал событий и в "Приложениях" увидел следующее:
Тип: Ошибка Источник: Userenv Категория: Отсутствует Код (ID): 1517 Описание: Реестр пользователя имя_компьютера/имя_пользователя был сохранен в то время, как приложение или служба продолжали использовать его во время выхода из системы. Используемая реестром пользователя память не была освобождена. Реестр будет выгружен, когда он не будет использоваться. Возможная причина — службы, выполняемые от имени пользователя. Попробуйте изменить настройку служб и задать их выполнение с учетными записями LocalService или NetworkService.
Сперва суть проблемы мне стала ясна, я подумал, что ошибку может вызывать запущенный firewall-сервис. Я отключил его автоматический запуск, но в дальнейшем проблема повторилась. Тогда я начал по очереди отключать все программы из "Автозагрузки" - это также не помогло, ошибка возникала вновь. Я уже начал грешить на загружаемую в оболочку dll библиотеку одного перспективного freeware архиватора, и хотел по совету журнала событий изменить настройку служб, как решение нашлось само собой.
От безысходности "вбил" текст ошибки в поисковик, и сразу же попал на страницу MS с подробным описанием подобного рода ошибок (1517, 1524, 1500, 1000) для Windows Server 2003, Windows XP, Windows 2000 и Windows NT 4.0. Для решения же всех этих проблем специалисты MS предлагали "используйте службу UPHClean (Microsoft User Profile Hive Cleanup Service). Служба UPHClean контролирует компьютер в процессе выгрузки профиля пользователя и закрывает открытые ресурсы. Благодаря этому компьютер может выгрузить, а затем согласовать профили пользователей." Ссылка на это благо также была приведена, но вот здесь-то и начиналось самое интересное. Чтобы получить заветный файл, предлагалось пройти процесс определения легальности копии установленной системы. Мало того, что это долго, так это еще и не очень мне интересно ;-). В общем, службу пришлось искать и скачивать с альтернативных источников. (Позже однако, выяснялось что ее можно получить и с официального сайта производителя, даже отказавшись проходить контроль легальности системы, но какими-то другими ссылками).
Установка сервиса проблем не вызывает. Полученная мной версия UPHClean v1.5e датируется 4 мартом 2004 года. После установки User Profile Hive Cleanup Service прописывается в системе как Process с автоматическим запуском, который занимает 320 кб памяти. Компьютер стал выключаться почти мгновенно - секунд за 10-15. В "Журнале событий" сервис оставляет заметки о своем успешном запуске, и о программе, которую при выключении он принудительно выгружает. Каково же было мое удивление, когда таковой оказалась программа не стороннего производителя, а "родная" системная svchost.exe. Теперь, примерно, обозначены направления по которым нужно искать причину возникновения ошибки, но пока меня и так все устраивает. Всем, кто сталкивается с подобного рода ошибками, настоятельно рекомендую службу UPHClean - она действительно помогает!