воскресенье, 10 декабря 2017 г.

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

Ориентировочно после билда 16299.15, наткнулся на крайне раздражающее поведение 10ки - она автоматически перезапускает приложения, которые были запущены перед нажатием на "ребут". Обычно это окна браузера, но подобному рестарту полежит так же и запущенный Regedit, который "пугает" окном UAC после перезагрузки, а так же ряд других приложений.

Об этом написано тут, и тут, и в куче еще мест. Способа "победить" данное поведение с помощью групповых политик не найдено (раньше, говорят, работало отключение "Use my sign-in info to automatically finish...", мне не помогло).

Приводится цитата инженера MS: 
Old behavior:
  • When you shut down your PC, all apps are closed
  • After reboot/restart, you have to re-open any app you'd like to use
New behavior:
  • When shutting down your PC, any open apps are "bookmarked" (for lack of a better word)
  • After reboot/restart, these apps will re-open automatically
If you want to start with no apps open (other than those set to auto-start via Task Manager/Start), you'll need to ensure all apps are closed before shutting down or restarting the PC.

Причина - в функции RegisterApplicationRestart. Данная функция в момент перезагрузки windows, если ей не был передан флаг RESTART_NO_..., зарегистрирует переданную строку в реестре:

Собственно, решение уже предложено - при завершении сеанса, запускать скрипт, удаляющий все строки "Application Restart #n" из ключа HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce.

Вот скрипт:
text 0.35 KB
  1. reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "Application Restart*">%TEMP%\entries.txt
  2. for /f "tokens=1-3,*" %%a in ('reg query HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "Application Restart*" ^| findstr "Application Restart"') do reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce /v "%%a %%b %%c" /f
Необходимо сохранить его куда-нибудь (например, в C:\Windows) и редактором групповых политик (gpedit.msc) назначить на выполнение при Logoff пользователя.

Комментариев нет: