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

Почему Windows 7 долго входила в систему с одноцветным фоном рабочего стола?

Почему Windows 7 долго входила в систему с одноцветным фоном рабочего стола? - 1

Лично у меня установлен одноцветный фон. Он был стандартным в 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