WindowsАдминистрирование

Нюансы автоматического перезапуска приложений в Windows 10

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

В рамках этой статьи я буду использовать аббревиатуру АПП (автоматический перезапуск приложений).


Краткая история вопроса

Функция АПП впервые появилась в версии 1709 без фанфар и пользовательской настройки, т.е. без возможности отключения. Единственным и неудобным обходным путем были ключи команды shutdown для перезагрузки и выключения: /r и /s. Я об этом  рассказывал в канале, в т.ч. о новых ключах команды для АПП.

В версии 1803 просьбы инсайдеров добавить настройку учли, но лишь частично. Вместо создания переключателя контроль перезапуска графически привязали к автоматическому входу после установки обновлений, номер 2 на картинке выше.

В версии 20H1 (сборка 18965+) сферу АПП расширили, а также сделали отдельный переключатель в параметрах (номер 1 на картинке) и флаг совместимости. Именно эти аспекты я буду разбирать сегодня.

Как включить или выключить автоматический перезапуск приложений

Из истории вопроса следует, что это зависит от версии Windows 10.

Графический интерфейс

  • 1709: изначально было включено и не отключалось, но в феврале 2018 года имплементацию 1803↓ портировали задним числом в 1709 с помощью накопительного обновления (источник)
  • 1803 – 1909: Параметры → Учетные данные → Варианты входа → Использовать мои данные для входа…
  • 20H1 и новее: Параметры → Учетные данные → Варианты входа → Перезапустить приложения

Групповые политики

Политика, контролирующая автоматический перезапуск приложений, пока не задокументирована. Возможно, она уже есть (сообщите, если нашли). Поэтому дальше разбираются политики, относящиеся к переключателю «Использовать мои данные для входа…»

Исходя из документации, политики работают в 1903+. Вероятно, это относится только ко второй из них, поскольку первая поддерживалась в 1803 и была портирована в 1709.

Поскольку из коробки функция включена, надо перевести в состояние «Disabled» первую политику «Sign-in and lock last interactive user automatically after a restart», т.е. DisableAutomaticRestartSignOn = 1. Эта политика появилась еще в Windows 8.1, но тогда АПП не было.

Дополнительно можно настроить поведение в зависимости от состояния BitLocker второй политикой — «Configure the mode of automatically signing in and locking last interactive user after a restart or cold boot».

От чего зависит автоматический перезапуск тех или иных приложений

По своей натуре функция работает не вполне очевидно. Недавно в форуме спросили, почему Firefox сам стартует после перезагрузки. В чате инсайдеров  задавали и обратный вопрос – почему приложения не перезапускаются (я предложил проверить на диспетчере задач, и оказалось, что АПП работает корректно).

Типы приложений

Список актуален для версии 20H1, потому что в предыдущих версиях ОС все ограничивается лишь некоторыми встроенными и сторонними приложениями Win32.


Магазинные

В магазине приложения бывают разные:

  • UWP – должны перезапускаться все. Например, у меня сработало с идущими в комплекте с ОС приложениями, а также с загруженным из магазина Unigram.
  • Desktop Bridge / MSIX — перезапуск не работает. В частности, не перезапустились TreeSize, CrystalDiskMark и Windows Terminal.

Отличить UWP от Desktop Bridge / MSIX можно в магазине по описанию приложения. Я сужу навскидку по списку доступных платформ. HoloLens и Xbox – признак UWP, а у Desktop Bridge там только Компьютер.

Также в дополнительных сведениях приложения внизу страницы указаны разрешения. Такая картина – признак Desktop Bridge.

Эти сведения берутся из манифеста приложения, который вы найдете в папке Program Files\WindowsApps. Картинке выше соответствует runFullTrust.

<Capabilities>
  <Capability Name="internetClient" />
  <rescap:Capability Name="runFullTrust" />
</Capabilities>

Встроенные Win32

Перезапуск работает у большинства приложений. У меня он не сработал для PowerShell, cmd, а также оснасток MMC (диспетчер устройств, журнал событий), хотя сам процесс mmc.exe запускался.

Учтите, что если в предыдущем сеансе программа была запущена от имени администратора, она перезапускается с обычными правами.

Сторонние Win32

Разработчик приложения должен зарегистрировать его в системе для автоматического перезапуска. Например, зарегистрированы браузеры Chrome и Firefox, приложения Microsoft Office и т.п. Регистрацию можно форсировать, что я покажу ниже.

Условия для перезапуска

Автоматический перезапуск привязан к событию входа в систему, нежели к перезагрузке. Об этом, кстати, сказано в описании АПП в параметрах.

Другими словами, функция работает в сценарии «выход из системы → вход в систему». Перезагрузка ОС между этими событиями не играет роли.

Технически это реализовано через старый добрый раздел реестра HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce, где создаются параметры вида Application Restart #0 с командной строкой для запуска каждого приложения.

Приложение может не перезапуститься, если системе не удалось корректно завершить его. Например, выполняется перезагрузка, а у программы есть несохраненные файлы, и она сигнализирует об этом. Вам предлагается отменить перезагрузку или форсировать ее.

Если форсировать или подождать завершения процессов по таймауту, такое приложение может не перезапуститься. Если же отменить перезагрузку, вернуться в систему и корректно закрыть проблемное приложение, то после перезагрузки не восстановятся другие ранее запущенные программы. Ведь система успела их закрыть, и они уже не были запущены при следующем завершении сеанса.

Наконец, есть еще одно мелкое объективное ограничение – невозможность полностью восстановить состояние приложения. Например, Word запустится с ранее открытыми документами, но не окном настроек, если оно было открыто до перезагрузки.


Как форсировать автоматический перезапуск приложения

Начиная с 20H1 регистрация для перезапуска реализована в параметрах совместимости приложения. Встроенные приложения по определению должны быть совместимы с ОС, и этих настроек у них нет. Зато они есть у всех сторонних программ, в т.ч. созданных Microsoft.

В свойствах исполняемого файла или ярлыка перейдите на вкладку Совместимость и установите флажок Зарегистрируйте эту программу для перезагрузки.

Затем перезапустите приложение, чтобы настройка совместимости вступила в силу. Я перепробовал пяток разных приложений и неудачной была лишь попытка с Fiddler.


Это не работает для магазинных приложений Desktop Bridge / MSIX. Они представляют собой упакованные Win32, поэтому в папке есть привычный исполняемый файл, пусть и не запускающий приложение двойным щелчком.

Но в этом случае флаг перезапуска в параметрах совместимости роли не играет. Это ожидалось, но я должен был проверить 🙂

Как связаны настройки перезапуска приложений и использования учетных данных для входа

Напомню, что в версиях 1803 – 1909 функция АПП привязана к настройке «Использовать мои данные для входа…». Поэтому здесь я разберу сценарии в 20H1, где есть раздельные переключатели (см. первую картинку в статье).


Включены обе настройки

Последовательность такая:

  1. ОС перезагружается, появляется экран входа.
  2. Система выполняет вход от вашего имени и тут же блокирует сеанс.
  3. Запущенные до перезагрузки приложения начинают стартовать.

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

Запустив с десяток разных приложений, я перезагрузился, засек время и подождал 5 минут на экране входа в систему. Затем вошел и выполнил в PowerShell от имени администратора:

dir C:\windows\prefetch | sort LastWriteTime

Изменения файлов pf у перезапущенных приложений происходят до интерактивного входа в систему. Данные префетчинга могут обновляться не у всех приложений, но даже нескольких достаточно.

Вывод команды не публикую, потому что вы легко можете провести эксперимент самостоятельно.

Включен только автоматический перезапуск приложений

Когда использование данных для входа отключено, АПП работает так:

  1. ОС перезагружается, появляется экран входа.
  2. Система ждет вашего входа.
  3. Запущенные до перезагрузки приложения начинают стартовать.

Включено только использование учетных данных для входа

Понятно, что перезапуска приложений в таком случае не будет. Поэтому ключевая польза от настройки проявляется в сценарии «установка обновлений вне периода активности». Последовательность такая:

  1. ОС перезагружается, появляется экран входа.
  2. Система выполняет вход от вашего имени и тут же блокирует сеанс.
  3. Система выполняет оптимизацию после установки обновлений. TiWorker, Runtime Optimization Service (.NET), реагирующий на новые файлы антивирус – вот это все.

Другими словами, нагрузка на CPU и диск приходится на момент, когда вы не пользуетесь ПК.

Заключение

Видимо, АПП изначально затевалась именно ради улучшения UX установки обновлений, который в идеале должен выглядеть так:

  1. Обновления загружаются в фоне.
  2. Перезагрузка выполняется вне периода активности.
  3. Система выполняет оптимизацию, приложения перезапускаются.
  4. Пользователь входит в систему, ничего не замечая.

С учетом флага совместимости почти так и работает за исключением административных инструментов и Desktop Bridge. Такие нестыковки добавляют путаницы, поэтому без понимания процесса складывается ощущение «кто в лес, кто по дрова».


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *