- PVSM.RU - https://www.pvsm.ru -

Лично у меня установлен одноцветный фон. Он был стандартным в Windows 951, и с тех пор я не расстаюсь с этим голубовато-зелёным цветом. Он меня успокаивает.
Поэтому представьте моё удивление, когда мне показали статью техподдержки «Экран Welcome может отображаться в течение 30 секунд в процессе входа, если вы установили одноцветный фон в Windows 7 или в Windows Server 2008 R2 [1]». Почему вход выполняется медленнее с одноцветным фоном?
После аутентификации входа Windows приступает к подготовке рабочего стола. При этом выполняется множество разных процессов: создаётся панель задач, загружаются и инициализируются компоненты, отвечающие за различные системные сервисы, создаётся и заполняется значками окно рабочего стола, окно фона рабочего стола загружает обои рабочего стола и выводит их на экран.
Система входа дожидается, пока все эти элементы сообщат о своей готовности или пройдёт 30 секунд, после чего она переключается с экрана Welcome.
Из этой схемы можно понять причину 30-секундной задержки: она означает, что одному из элементов не удалось сообщить о своей готовности. Допустим, код выглядит примерно так:
InitializeWallpaper()
{
if (картинка обоев задана)
{
LoadWallpaperBitmap();
}
}
LoadWallpaperBitmap()
{
находим картинку на диске
загружаем её в память
выводим её на экран
Report(WallpaperReady);
}
Сообщающий о готовности обоев код находится внутри кода картинки обоев, то есть если картинки нет, сообщение не создаётся и система входа впустую ожидает отчёта, который никогда не придёт.
В той же статье есть упоминание другой статьи, в которой говорится, что если включена групповая политика «Скрывать значки рабочего стола», то тоже может возникнуть 30-секундная задержка.
Групповые политики подвержены этой проблеме, потому что обычно их добавляют уже после написания основного кода. Если нужно добавить групповую политику, мы находим соответствующий код и окружаем его огромным условием «если разрешено политикой».
// Первоначальный код
InitializeDesktopIcons()
{
ограничиваемся папкой рабочего стола
создаём список значков
добавляем их на экран
Report(DesktopIconsReady);
}
// Дополненный поддержкой групповой политики
InitializeDesktopIcons()
{
if (значки рабочего стола разрешены политикой)
{
ограничиваемся папкой рабочего стола
создаём список значков
добавляем их на экран
Report(DesktopIconsReady);
}
}
Область видимости блока if вышла за рамки вызова отчёта, сообщение о готовности не отправляется и система входа остаётся на экране Welcome все 30 секунд.
Стоит отметить, что в обоих случаях не процесс входа растягивается на 30 секунд. Экран Welcome просто продолжает отображаться — это не время, в течение которого все системы сообщают о готовности (в зависимости от производительности конкретной системы это может быть и 5 секунд, и 25 секунд).
Если взглянуть на даты публикации статей, то можно понять, что проблема была устранена в ноябре 2009 года, всего несколько месяцев спустя после выпуска Windows 7 в июле 2009 года.
1 Изначально я не пользовался фонами-картинками, потому что они занимали много памяти, а когда у тебя только 4 или 8 мегабайтов памяти, отдавать три четверти мегабайта просто под обои неразумно.
Кроме того, я стараюсь придерживаться конфигураций по умолчанию, потому что это упрощает создание отчётов о багах. Если в инструкциях по воспроизведению бага написано «установите систему с нуля, а затем выполните такие-то шаги», то он будет устранён с гораздо большей вероятностью, чем баг с инструкцией «установите систему с нуля, измените пятьдесят параметров, а затем выполните такие-то дополнительные шаги». Гораздо проще оправдать устранение бага, влияющего на стандартную конфигурацию, чем того, для возникновения которого нужно, чтобы пользователь изменил параметры с используемых по умолчанию, особенно если эти параметры непрозрачны.
Автор: PatientZero
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows-7/418496
Ссылки в тексте:
[1] Экран Welcome может отображаться в течение 30 секунд в процессе входа, если вы установили одноцветный фон в Windows 7 или в Windows Server 2008 R2: https://support.microsoft.com/en-us/topic/the-welcome-screen-may-be-displayed-for-30-seconds-during-the-logon-process-after-you-set-a-solid-color-as-the-desktop-background-in-windows-7-or-in-windows-server-2008-r2-b4565ced-703a-cc85-bf9c-6b3d586d6421
[2] Источник: https://habr.com/ru/articles/905360/?utm_source=habrahabr&utm_medium=rss&utm_campaign=905360
Нажмите здесь для печати.