﻿
 :: 2020 westlife, LeX333666 (LeX_6000), форум: http://forum.ru-board.com/topic.cgi?forum=62&bm=1&topic=30617&glp

 :: WARNING: English versions of presets: "Presets_EN.txt" and "QuickPresets_EN.txt" can be used instead of the originals: "Presets.txt" and "QuickPresets.txt"
 :: Move the presets files from "\AutoSettingsPS\Files\EN\..." to the root folder: "\AutoSettingsPS\..."

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Постоянные ссылки на все скрипты:                                                ::
 ::  Yandex Disk: https://yadi.sk/d/CMqvcp1F3QiaWL                                   ::
 :: Google Drive: https://drive.google.com/open?id=1lxbiaL5-EF65EVpbogqInfXmYk-oJd2H ::
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Поддержать меня материально можно по этим реквизитам:                            ::
 :: Sberbank Maestro: 6390 0204 9003 8140 27 (18 цифр, Алексей Т.)                   ::
 :: Ренессанс Кредит: 5161 1612 0941 6142                                            ::
 :: Yandex Money: https://yoomoney.ru/to/410018438535989                             ::
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 ::                                                                 ::
 ::    ВАЖНО!!!   НЕОБХОДИМО ОЗНАКОМИТЬСЯ СО ВСЕЙ ИНФОРМАЦИЕЙ!!!    ::
 ::                                                                 ::
 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 AutoSettingsPS - это инструмент, для автоматической настройки основных параметров Windows,
 выполнения обновления из папки или обслуживания, с возможностью сконфигурировать сценарий под себя, с открытым исходным кодом,
 и отображением всех действий, с описанием. Сделан для личного использования и выложен для всех.
 Написан на PowerShell 5.

 Во всех описаниях только самое важное, так как всё описать не возможно, да и не запомнить всё.
 Это совершенно новый проект, сделанный с нуля, на языке PowerShell, с другими алгоритмами, реализациями
 и дополнительными возможностями, чем был в предыдущем AutoSettings.bat, но с похожим управлением и оформлением.

 Для использования не нужно знать PowerShell или что-то устанавливать.
 AutoSettingsPS полностью автономен, и работает из папки.
 Bзменения в Windows вносит только по выбору пользователя в меню,
 и есть возможность восстановить обратно по умолчанию все параметры скрипта.

 Все настройки адаптировались под Windows 10 x64/x86 1809 (17763) и новее.

 Основная цель AutoSettingsPS - Освободить ресурсы Windows от лишних постоянных действий.
 Отключить весь возможный сбор данных, и современные функции, оставив стандартный функционал Windows для игр или работы.
 С возможностью дополнить его своими твиками, и сконфигурировать под себя.


    ╔═════╗
 ■══╝  1  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Описание общей структуры всех меню комплекса настроек AutoSettingsPS
   Все настраиваемые параметры можно восстановить по умолчанию, как в нетронутой Windows

 Главное Меню разделено на группы:

 [0] = Quick Settings | Быстрые настройки почти всех меню сразу

       Используется для автоматизации настройки почти всех параметров AutoSettingsPS за один проход
       из большинства отдельных меню и отдельных скриптов. Количество применяемых параметров настраивается пресетом: \QuickPresets.txt
       QuickPresets.txt настроен на оптимальный вариант конфигурации, каждый под себя может настроить его индивидуально.
       Указанные параметры в \QuickPresets.txt ориентируются в свою очередь на основной пресет \Presets.txt

 [1] = Configs-Checks | Применение и проверка некоторых важных параметров Windows

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


 Далее идёт весь набор отдельных меню для ручной последовательной настройки и обслуживания Windows.
 Все меню включают в себя группы настроек, которые связаны между собой или относятся к одному направлению.


 [2] = SelfMenu | Группа из разных меню для индивидуальной настройки Windows

       Используется для настройки некоторых важных параметров Windows под свои предпочтения, так как у всех они свои.

        [1] = Защитник | Настройка Защитника Windows
        [2] = Оптимизация загрузки | Настройка Гибернации, Быстрой загрузки, Оптимизации загрузки
        [3] = Поиск, Кортана, Индексирование | Настройки связанные с поиском

        [4] = Сеть | Группа настроек связанных с сетью, в него входит так же отдельное меню по настройке локальной сети.
        [5] = Проводник | Настройки связанные с проводником: отображение папок, значков, обоев, установки иконок дисков, очистки кэша эскизов и иконок.

        [6] = Просмотр фотографий Windows | Восстанавливает параметры стандартного просмотрщика
        [7] = Журналы событий | Включает или отключает журналы событий и выводит список работающих журналов.
        [8] = Контроль учётных записей | Настраивает некоторые режимы UAC
        [9] = Задача резервирования Реестра | Создание своей задачи MyRegIdleBackup. Вообще существует возможность заставить работать и стандартную задачу

       [10] = Папки пользователя | Меню изменения расположений папок (Мои Документы, Музыка, Загрузки и т.д.)
       [11] = Папка Temp Пользователя | Изменение расположения для временной папки temp
       [12] = Папка Temp Системная    | Изменение расположения для временной папки temp системы
       [13] = Запрет запуска Exe файлов | Блокировка запуска Exe файлов по имени, если нужно запретить выполнения чего либо в системе, применять осторожно.

       [14] = Управление Apps/Appx | Загрузка/Установка/Перерегистрация/Удаление Модерн Приложений
       [15] = Звуковые профили

 [3] = Групповые Политики | Дополнительная необязательная возможность настройки ГП своими параметрами

       Используется при необходимости индивидуально, так как весь набор настроек ГП используется во всех скриптах самостоятельно через LGPO.exe

 [4] = Центр Обновления | Группа параметров относящаяся к Центру обновления
 [5] = Обслуживание     | Группа параметров и действий относящаяся к обслуживанию Windows и обновлению оффлайн.

 [100] = Перезагрузить Компьютер | Принудительно

 [999] = Восстановление | Восстанавливает все параметры комплекса AutoSettingsPS из всех меню согласно пресету \QuickPresets.txt (из второй части пресета для восстановления)


    ╔═════╗
 ■══╝  2  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Описание общей структуры обоих пресетов: \Presets.txt и \QuickPresets.txt

 Главный пресет \Presets.txt

 В него входят все возможные настройки для конфигурирования некоторых меню и скриптов под свои предпочтения, у которых можно проверять текущее состояние.
 Можно задать свои пути для расположения папок, свои иконки, свои сервера синхронизации времени, исключить какие то группы настроек из выполнения.
 или исключить целиком скрипты для меню [1] = Configs-Checks

 Второй пресет: \QuickPresets.txt ([0] = Quick Settings) для указания полного комплекта для быстрый настройки почти из всех меню комплекса AutoSettingsPS.
 Все настройки выполняются за один проход. На подобии как для меню [1] = Configs-Checks
 При его использовании сами скрипты точно также берут параметры из пресета \Presets.txt

 То есть не важно как вы запустили выполнение какого либо действия, через Quick Settings или Configs-Checks или SelfMenu вручную,
 настройки будут браться из главного текущего пресета: \Presets*.txt


    ╔═════╗
 ■══╝  3  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Структура папок и файлов AutoSettingsPS.

 Все файлы должны быть в кодировке UTF-8! В том числе для своих настроек! Кроме файлов .Reg с кодировкой UTF-16

 Файл пресетов для основных настроек: \Presets.txt         Подробнее в нём
 Файл пресетов для быстрой настройки: \QuickPresets.txt    Подробнее в нём

 Файлы ps1, cmd, bat, reg со своими настройками складывать в папку: \Files\CustomFiles  Подробнее в \QuickPresets.txt

 Мой файл тёмной темы для PowerShell ISE: \Files\DarkTheme-for-PS-ISE.StorableColorTheme.ps1xml (Так как все скрипты нужно править в редакторе для PS, например ISE)

 1. Батник _Start_AutoSettingsPS.bat запускает Ярлык AutoSettings.lnk, который запускает главный cкрипт.
    В настройках ярлыка указаны параметры запуска PowerShell и настройки для консоли: Размер, шрифт, цвет, буфер.

 2. Главный скрипт:  \Files\_Tools\AutoSettings.ps1
    В нём указаны все основные глобальные переменные, выполнение всех проверок, запуск/перезапуск всех меню и скриптов.

 3. Файлы всех меню: \Files\_Tools\Menu

 4. Настройка Windows идёт через функции в папке: \Files\_Tools\Scripts, в заголовках функций находится основная информация.
    В этих функциях можно убирать/комментировать, заменять ненужные или добавлять параметры для выполнения.

 5. Функции, обеспечивающие выполнение действий для всего и вывода информации, находятся в папке: \Files\_Tools\Scripts-Management

 6. Папка для файлов обновлений: \Files\Updates  (.cab или .msu)

 7. Папка для файлов настроек Групповой Политики через LGPO.exe: \Files\GP
    В ней сохраняются настройки при создании своего файла настроек Групповой Политики из меню для ГП.
    Заготовленных параметров ГП для примера нет. Все настройки ГП применяются через параметры в функциях.

 8. Папка для файлов Appx/Msix/AppxBundle/MsixBundle/Xml/Cer: \Files\Appx


    ╔═════╗
 ■══╝  4  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■  Используемый набор утилит для возможности реализации некоторых необходимых действий:

 1. Handle.exe - Бесплатная Утилита v.4.22 для использования командной строкой от MS
    Для определения процессов, блокирующих папку.
    Можно ознакомиться и скачать тут: https://technet.microsoft.com/en-us/sysinternals/handle.aspx

 2. 7z.exe - Консольная бесплатная версия архиватора 7-Zip 22.01 x86
    Используется тут для извлечения нужных файлов из пакетов обновлений или распаковки CAB и MSU.
    Ссылка на закачку и описание: http://www.7-zip.org/

 3. smartctl.exe - Бесплатная Утилита v7.3 x86 для использования командной строкой от ballen4705, chrfranke, dipohl
    Нужна для получения информации и SMART HDD и SSD дисков.
    Используется тут для определения SSD дисков в системе, которые могут быть определёны через PS как HDD
    Но тоже не может дать 100% гарантию определения SSD, из-за проблемных драйверов или рейд массивов.
    Можно скачать и ознакомиться тут: https://sourceforge.net/projects/smartmontools/

 4. LGPO.exe v3.0 - Официальная утилита для использования командной строкой от MS.
    Помогает автоматизировать настройку и бэкапы Групповой Политики, аудита и настройку безопасности.
    Используется тут для добавления или сброса отдельных параметров или разделов целиком в Групповой Политике.
    Описание: https://blogs.technet.microsoft.com/secguide/2016/09/23/lgpo-exe-v2-0-pre-release-support-for-mlgpo-and-reg_qword/
    Скачать: https://www.microsoft.com/en-us/download/details.aspx?id=55319

 5. ffmpeg.exe - Бесплатная консольная утилита x86 v4.3.1
    Скопмилированная мной из исходного кода, с минимальным набором функций для получения минимального размера exe файла (977Кб)
    С функциями только уменьшать громкость wav файлов, и получать из них уровень громкости.
    Скачать и ознакомиться можно тут: https://ffmpeg.org/

 Всё остальное реализовал через функции, средствами и возможностями языка PowerShell, при использовании кода .NET Csharp (С#)
 Использовал максимально понятные алгоритмы, вид записи, и максимально возможное описание ко всем строкам кода.
 Писал функции, изучая PowerShell. И минимально код Csharp (C#), так как подходящего, нужного, или, тем более, полностью готового, ничего не существует.
 Это первое моё знакомство с PowerShell и Csharp.


    ╔═════╗
 ■══╝  5  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Скрипты определяют разрядность Windows и учитывают это при установке параметров. При установке cab файлов версия Windows будет учтена.
   Язык системы не играет роли. Везде используются системные переменные, и они возможны при указании в пресетах.
   Скрипт определяет любые права при запуске: TI, System, Admin, User. Пропустит только с Admin правами.

 Реализовал важные необходимые возможности для скриптов AutoSettingsPS и RepackWIMPS. Подробности описаны в заголовках функций.
 Только они не переведены на английский язык, основные из них:

 1. Использование (подключение токена) Олицетворения текущего процесса за TrustedInstaller или System,
    с включением всех привилегий, без перезапуска, без утилит (Функция Token-Impersonate)
 2. Добавление привилегий текущему процессу, без утилит (Функция: Token-Privileges)
 3. Запуск процессов с правами TrustedInstaller или System, привилегии оригинальные для этих процессов, без утилит (Функция: Start-ParentProcess)
    Пример импорта параметров реестра из test.reg файла из папки "\Files\CustomFiles" под правами системы
    (эту строку записать например в скрипт \Files\CustomFiles\1_Script_Test.ps1, без дописанных _TI или _SYS):
      Start-ParentProcess -RunAs SYS -CurrentDirectory .\Files\CustomFiles -CmdLine 'reg import "test.reg"' -Wait
    Такой вариант, так как под impersonate (файлы ps1 с именем ..._TI или ..._SYS) нет доступа при использовании reg imoprt
    (не передаются привилегии в этом случае и некоторых других, такие условия разграничения прав в системе).
 4. Удобная раскраска вывода консоли, при указании в одну строку, без утилит (Функция: Write-HostColor)
 5. Получение доступа к разделам реестра или файлам в любых случаях, кроме блокирования драйверами, без утилит (Функция: Set-OwnerAndAccess)
    Для временного получения доступа используется отдельное сохранение оригинального SDDL, перед получением доступа, затем возврат прав по завершении, этой же функцией.
 6. Сохранение вывода консоли в том же виде в файл HTML, без утилит (Функция: Save-HtmlLog)
 7. Настройка реестра Set-Reg, групповых политик Set-LGP, задач Set-Tsk, служб Set-Svc, драйверов Set-Drv, которые используют выше описанные функции по ситуации автоматически,
    они позволяют указать функции что нужно сделать как стандартному командлету, не думая об отсутствии раздела, доступа и т.д.
    Всё, что необходимо, выполнится автоматически. Временная смена прав происходит только в тех случаях, когда нет доступа ни для кого, то есть олицетворение за TI не решило проблему.
    И выводится результат выполнения, то есть видно сразу, параметр применён или нет.
    Почти все действия выполняются через .NET команды напрямую, а не командлетами.
 8. Разработан принцип удобного создания любых меню, с любой нужной раскраской вывода, результатами функций, переменными внутри меню.
    Есть отдельное описание для структуры всех меню. (Нет перевода на английский)
 9. Другие функции, в том числе использующие выше описанные.

 Функции написаны по одному или похожему принципу, для удобства понимания и использования.
 В том числе для возможности объединения всех их в один общий проект автоматической настройки системы, или обслуживания образов.

 Цвет, размер шрифта, размер окна и буфера для консоли указан в параметрах ярлыка для запуска скрипта.
 Системные настройки консоли ни на что не влияют и не изменяются.
 Указанные в ярлыке цвета настроены мной. Так как по умолчанию цвета для консолей в системе - полное разочарование.

 Формат вывода разработан из расчёта максимальной информативности, но при этом максимальной компактности.
 Один принцип использования подсветки вывода, немного отличается для отображения меню и для вывода во время выполнения:
  При выполнении Ошибки - Красный и Жёлтый; Восстановление - пурпурный (magenta), Информация - Белый, не важная информация - тёмносерый или тёмно-бирюзовый (DarkCyan)
  Результат положительный - Зеленый, Отрицательный - Жёлтый. Для Меню жёлтый также показывает дефолтный параметр или изменённый, и названия меню.
  Суть в контрастах для лучшего восприятия.


    ╔═════╗
 ■══╝  6  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Описание некоторых пунктов меню и возможностей.

 Меню Quick-Settings - Применение или восстановление всех необходимых настроек сразу. Подробнее в файле пресетов для быстрых настроек: QuickPresets.txt
 Скрипт AutoSettingsPS делался именно ради этого пункта в основном и поэтому так называется!

 Параметры из главного пресета Presets.txt используются и при быстрой настройке.
 Если в пресете QuickPresets.txt для Quick-Settings по сбросу всех настроек будет использован полный сброс Групповой Политики (ГП) (удаляются только файлы .pol),
 то не важно в каком порядке, по окончании выполнения всех действий не будет происходить применение настроек ГП из других функций.
 Так как есть нюансы управления настройками ГП, в том числе через lgpo.exe
 И нет смысла, так как ГП сбрасываются, зачем в ГП что-то еще настраивать.

 Если батник для запуска главного скрипта _Start_AutoSettingsPS.bat запущен с ключом: /RunQuickSettings,
 будет выполнен автозапуск быстрых настроек Quick-Settings из первого пункта, затем остановка. Выход - после нажатия любой клавиши.
 Для закрытия скрипта после завершения нужно добавить еще один параметр: /QuickExit
 Пример: "D:\AutoSettingsPS\_Start_AutoSettingsPS.bat" /RunQuickSettings /QuickExit  (нужно выполнять запуск с правами администратора, иначе будет запрос прав)


    ╔═════╗
 ■══╝  7  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Групповые Политики, с использованием LGPO.exe v3.0

 Утилита LGPO.exe настраивает ГП, аналогично ручной настройке в редакторе ГП "gpedit.msc".
 Удаляет или Добавляет отдельные параметры в уже настроенные политики. Если параметр существует, то заменяет его.

 В некоторых случаях, если указывать удаление параметра, то редактор ГП может принять параметр настроенным на "Отключен"
 Это правильно, так как некоторые параметры имеют одинаковый эффект при "Не задан" и "Отключён".
 Чтобы заставить считать в таких ситуациях "не заданным", надо указывать удаление всех параметров в том разделе.
 Но нужно понимать, что если там есть параметры, которые удалять не надо, то очистку всего раздела делать не нужно!
 Но можно сделать удаление раздела, а затем добавить нужный параметр обратно, который там должен быть.

 Поэтому, если для LGPO указать удаление параметра, то такое поведение записывается в файл Registry.pol
 И если добавить такой параметр через реестр, то при обновлении ГП этот параметр будет удален.
 То же самое и в обратную сторону. Чтобы стереть команды удаления параметров или очистки разделов реестра из Registry.pol,
 нужно было сбрасывать все ГП через меню. Теперь не надо в случаях, если нет других параметров в разделе,
 так как теперь используются другие команды для этих действий в функции использования lgpo.exe

 В новой реализации в функции Set-LGP (для lgpo) добавил автоматическую проверку отсутствия параметров в разделе,
 и в случае если нет параметров, добавление очистки всех настроек связанных с этим разделом - Это решает 98% отображений в ГП как "Отключено".
 Не все, потому что в тех разделах реестра для политик могут быть параметры заданные не через ГП. Или не все параметры указаны для удаления.

 Параметры принимаются для функции Set-LGP (lgpo) только для разделов с именем ...\Policies\... и в кусты реестра HKLM или HKCU
 Если добавлять в любое другое место кустов HKLM и HKCU, то сбросом ГП эти параметры не убрать, поэтому не включил такую возможность.

 Функция Set-LGP (для LGPO) сообщит обо всех не подходящих путях. И принимает на себя параметры как в стандартных командлетах и функции Set-Reg + другие возможности.
 Сценарий применения файла LGPO, при ошибке во время настройки, скопирует проблемный файл, с параметрами ГП для lgpo, в папку со скриптом,
 чтобы можно было понять какой параметр был ошибочный. Все действия отображаются, правильные и ошибочные.

 Функция Set-LGP (для LGPO) выполняет удаление или установку как обычный командлет и как функция Set-Reg
 и дополнительно записывает в глобальную переменную параметр для LGPO, который везде указан для применения в самом конце настройки.
 Если ГП в системе нет, то просто не будет применения ГП, а сами параметры всегда и сразу настраиваются в реестре напрямую.


    ╔═════╗
 ■══╝  8  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Управление и выполнение обслуживания Windows (Описание старое из батника для 1607, но подправленное немного, и приведен для понимания)


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

 Не надо отключать его, если не будет производится ручное обслуживание!
 Достаточно отключения лишних действий Windows при настройке в других меню, и это уже сократит набор и частоту обслуживающих дейстивий.

 Оно использует задачи, со скрытыми параметрами "MaintenanceSettings".
 После запрещения обслуживания, нельзя запустить эти задачи и вручную, или запустить обслуживание из центра обслуживания.
 Часть задач уже отключаются скриптом, + часть можно отключить через любые ваши настройки.
 Некоторые отключены в системе изначально, и будут включены службами по необходимости.

 Выписал весь список задач, использующихся авто-обслуживанием Windows 10 1607.
 Список сделан на основе системы после RepackWIM, на чистой Windows могут быть еще задачи.
 Они выполняются в зависимости от условий, не все каждый раз, но всё равно слишком много.
 Часто нагружают систему, садят батарею и т.д. ради ~1% быстродействия и сбора ваших данных, MS "заботится" о "вас":

   1: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319" (Проверка образов при загрузке, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   2: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64" (Проверка образов при загрузке, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   3: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64 Critical" (Перекомпиляция образов, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   4: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 Critical" (Перекомпиляция образов, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   5: "Microsoft\Windows\AppID\SmartScreenSpecific" (Сбор данных для SmartScreen и MS)
   6: "Microsoft\Windows\Application Experience\ProgramDataUpdater" (сбор данных для MS, для помощника по совместимости программ)
   7: "Microsoft\Windows\Application Experience\StartupAppTask" (оценка списка автозагрузки и предупреждения)
   8: "Microsoft\Windows\ApplicationData\CleanupTemporaryState" (очистка временных файлов приложений Windows Store)
   9: "Microsoft\Windows\ApplicationData\DsSvcCleanup" (dstokenclean.exe обслуживание общего доступа к данным Windows Store)
  10: "Microsoft\Windows\AppxDeploymentClient\Pre-staged app cleanup" (очистка приложений Windows Store)
  11: "Microsoft\Windows\Chkdsk\ProactiveScan" (Chkdsk, pstask.dll Проверка и устранение проблем с NTFS)
  12: "Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask" (сбор данных для MS)
  13: "Microsoft\Windows\Customer Experience Improvement Program\UsbCeip" (сбор данных для MS)
  14: "Microsoft\Windows\Defrag\ScheduledDefrag" (defrag.exe Дефрагментация SSD и HDD, TRIM SSD)
  15: "Microsoft\Windows\Device Setup\Metadata Refresh" (сбор данных для MS, обновление метаданных для устройств)
  16: "Microsoft\Windows\Diagnosis\Scheduled" (sdiagschd.dll Сценарии проверки системы)
  17: "Microsoft\Windows\DiskCleanup\SilentCleanup" (очистка системного диска, при не достатке места и при простое, cleanmgr.exe)
  18: "Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector" (сбор данных для MS)
  19: "Microsoft\Windows\DiskFootprint\Diagnostics" (сбор данных для MS, оценка использования диска)
  20: "Microsoft\Windows\DiskFootprint\StorageSense" (сбор данных для MS, оценка использования диска для Windows Store)
  21: "Microsoft\Windows\ErrorDetails\ErrorDetailsUpdate" (сбор данных для MS)
  22: "Microsoft\Windows\Feedback\Siuf\DmClient" (сбор данных для MS)
  23: "Microsoft\Windows\FileHistory\File History (maintenance mode)" (обслуживание архивации файлов)
  24: "Microsoft\Windows\LanguageComponentsInstaller\Uninstallation" (LanguageComponentsInstaller.dll Удаление лишних языковых возможностей)
  25: "Microsoft\Windows\License Manager\TempSignedLicenseExchange" (проверка лицензий для приложений Windows Store)
  26: "Microsoft\Windows\Maintenance\WinSAT" (измерение быстродействия системы)
  27: "Microsoft\Windows\MemoryDiagnostic\RunFullMemoryDiagnostic" (проверка оперативной памяти)
  28: "Microsoft\Windows\MUI\LPRemove" (lpremove.exe Очистка лишних языков и их параметров)
  29: "Microsoft\Windows\PI\Sqm-Tasks"  (сбор данных для MS, о доверенном платформенном модуле)
  30: "Microsoft\Windows\Plug and Play\Plug and Play Cleanup" (cleanmgr.exe удаление старых ненужных драйверов, входит в очистку диска)
  31: "Microsoft\Windows\Power Efficiency Diagnostics\AnalyzeSystem" (сбор данных для MS, проверка энергопотребления)
  32: "Microsoft\Windows\RecoveryEnvironment\VerifyWinRE" (проверка среды восстановления Windows)
  33: "Microsoft\Windows\Registry\RegIdleBackup" (Архивация реестра)
  34: "Microsoft\Windows\Servicing\StartComponentCleanup" (TiWorker.exe, обслуживание WinSxS, удаление старых обновлений и компонентов, входит в очистку диска)
  35: "Microsoft\Windows\SettingSync\BackgroundUploadTask" (Обслуживание синхронизации файлов)
  36: "Microsoft\Windows\SettingSync\BackupTask" (Обслуживание синхронизации файлов)
  37: "Microsoft\Windows\Setup\SetupCleanupTask" (Удаляет файлы предыдущей установки Windows)
  38: "Microsoft\Windows\SharedPC\Account Cleanup" (Очитка старых аккаунтов для удаленного доступа)
  39: "Microsoft\Windows\Shell\IndexerAutomaticMaintenance"  (Обновление поискового индекса)
  40: "Microsoft\Windows\Sysmain\HybridDriveCachePrepopulate" (обслуживание кэша гибридного диска)
  41: "Microsoft\Windows\Sysmain\HybridDriveCacheRebalance" (обслуживание кэша гибридного диска)
  42: "Microsoft\Windows\Sysmain\ResPriStaticDbSync" (сбор данных для MS, синхронизация списка ваших данных)
  43: "Microsoft\Windows\Sysmain\WsSwapAssessmentTask" (сбор данных для MS, Оценка Swapfile.sys для приложений Windows Store)
  44: "Microsoft\Windows\SystemRestore\SR" (srtasks.exe создание точек восстановления)
  45: "Microsoft\Windows\Time Synchronization\SynchronizeTime" (w32tm.exe синхронизация времени)
  46: "Microsoft\Windows\Time Zone\SynchronizeTimeZone" (tzsync.exe, Синхронизация часовых поясов)
  47: "Microsoft\Windows\UpdateOrchestrator\Maintenance Install" (запланированная установка обновлений)
  48: "Microsoft\Windows\WOF\WIM-Hash-Validation" (обслуживание подключенных файлов WIM)

 Большинству пользователей, реально нужных или редко нужных всего несколько:
 Генерация образов .NET Framework для программ и компонентов (компиляция образов с машинным кодом к программам, для ускорения их запуска и работы).
 Очистка диска от старых обнов, драйверов и временных файлов.
 Синхронизация времени, дефрагментация, TRIM SSD дисков и проверка NTFS.

 Вот эти задачи по группам:
 Быстродействие и настройка (важна или желательна после установки/замены софта, или обновлений системы):
   1: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319" (Проверка образов х86 при загрузке, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   2: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64" (Проверка образов х64 при загрузке, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   3: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 64 Critical" (Перекомпиляция образов х64, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
   4: "Microsoft\Windows\.NET Framework\.NET Framework NGEN v4.0.30319 Critical" (Перекомпиляция образов х86, Mscorsvw.exe, Ngen.exe, NGenTask.exe)
  14: "Microsoft\Windows\Defrag\ScheduledDefrag" (defrag.exe Дефрагментация SSD и HDD + TRIM SSD, лучше делать после очистки диска)
  45: "Microsoft\Windows\Time Synchronization\SynchronizeTime" (w32tm.exe синхронизация времени)

 Очистка диска (имеет хоть какой то смысл, не чаще 1 раза в мес, вручную все эти 3 действия делаются через cleanmgr.exe):
  17: "Microsoft\Windows\DiskCleanup\SilentCleanup" (cleanmgr.exe /autoclean /d %systemdrive% - авто-очистка системного диска: временные файлы, обновы, драйвера и т.д.)
  30: "Microsoft\Windows\Plug and Play\Plug and Play Cleanup" (cleanmgr.exe удаление старых не нужных драйверов, входит в очистку диска)
  34: "Microsoft\Windows\Servicing\StartComponentCleanup" (TiWorker.exe, обслуживание WinSxS, удаление старых обнов и компонентов, входит в очистку диска)

 Устранение проблем (обычно проверяют, при проблемах, через свойства диска):
  11: "Microsoft\Windows\Chkdsk\ProactiveScan" (Chkdsk, pstask.dll Проверка и устранение проблем с NTFS)


 Из этого всего в итоге у нас остается, имеющего смысл для быстродействия и после обновлений, 2 варианта ручных действий:
  Вариант 1: Генерировать образа .NET для программ, использующих .NET (если были обновления программ или Windows, либо новый софт, Критично важное действие!)
  Вариант 2: Обновить систему -> синхронизировать время -> сгенерировать образа! -> очистить диск -> сделать дефрагментацию HDD и/или TRIM SSD.
 Не обязательно даже часто делать 2 вариант, важно только .NET, и если не делать этого, просто будет медленнее работать Windows.

 В итоге Windows не будет мучать железо, в том числе во время простоя.
 Это не влияет на авто-проверку и ручную установку обновлений, и другие задачи, не входящие в список выше.
 Если не отключать Superfetch, то он будет иногда анализировать диск при простоях, прцесс: svchost (LocalSystemNetworkRestricted -p)
 Из плюсов - вы сами выбираете время для этих грузоёмких и долгих операций по обслуживанию. Минус - надо делать самому =)

 Общие возможности использования обновлений и обслуживания:
 Исключить дефрагментацию своих SSD дисков, разделив задачи оптимизации дисков. Они подменят оригинальную задачу, и будут использоваться обслуживанием Windows или самостоятельно.
 Отключить обновления и проверку обновлений Windows полностью, а обновлять вручную из папки.
 Можно выбирать время для обновления и важных обслуживаний. Достаточно делать очистку раз в пол года, но всё по ситуации.


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

  1. Меню ручного обновления

     Для использования надо скачать файлы MSU или CAB обновлений и закинуть их в папку \Files\Updates, всё.

     Самое простое скачать по готовым ссылкам с форума ru-board, там выкладывают ребята.
     Вот например от FFoldz
     http://forum.ru-board.com/topic.cgi?forum=62&topic=31153&start=20#9

     Поиск файлов .msu и .cab файлов производится в папке \Files\Updates, а устанавливаются утилитой DISM
     Стандартная процедура, предусмотренная MS, для автономного обслуживания.

     Отключенные службы и задачи обновления Windows не мешают такой установке!

     Названия самих файлов не важны. Отображаемая информация берется из них,
     так же отображает состояние и подходят ли к текущей Windows.

     У файлов MSU проверяется только разрядность.
     Так как извлечение cab из msu и получение полной информации из cab для отображения каждый раз будет происходить слишком медлено.

  2. Меню сохранения драйверов для возможности восстановить их после чистой установки Windows

  4. Генерация образов .NET Framework (Ngen.exe)

     Создает образа .NET, которые были запрошены установленными программами или компонентами Windows, использующими .NET Framework

     Это ускоряет запуск и работу этих компонентов.
     Компоненты используют готовые команды из сгенерированных образов .NET для работы, а не генерируют каждый раз их с нуля.
     Не все программы используют .NET для работы, и им генерация образов не нужна.
     Процедура стандартная, описана на сайте MS.

  5. Очистка папки WinSxS и системного диска

     Сначала используется команда: Dism /Online /Cleanup-Image /StartComponentCleanup
     для очистки старых обновлений в WinSxS без правила "30 дневной задержки", как у cleanmgr.exe
     Затем стандартная команда для %windir%\system32\cleanmgr.exe
     Автоматически удаляет старые обновления, старые драйвера, очищает временные папки и др.
     Но тут в скрипте указан пропуск очистки для:
       Папка 'Загрузки', Корзина, Обновления, Кэш иконок, История файлов пользователя, BranchCache

  6. Принудительная синхронизация времени, с добавлением своих серверов синхронизации.
     Результат установки синхронизированного времени может быть с задержкой.
     Нужен интернет.

  8. Меню оптимизации Локальных дисков

     Создаются 2 отдельные переменные, с буквами дисков в системе %HDDdrives% и %SSDdrives%, и на этой основе всё происходит дальше.

     Раздельные задачи, параметры стандартные:
     Для всех SSD - выполняет только TRIM:    %windir%\system32\defrag.exe %SSDdrives% -h -l
     Для всех HDD - выполняет дефрагментацию: %windir%\system32\defrag.exe %HDDdrives% -h -o -$

     Задачи будут использоваться обслуживанием Windows вместо стандартной задачи, если не запрещаете, или самостоятельно.
     Либо если в ручную запускате обслуживание Windows. Это по желанию.



    ╔═════╗
 ■══╝  9  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

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

 Папки: Videos, Documents, Downloads, Pictures, Music, Desktop, Saved Games
 Для копирования файлов используется системная утилита robocopy, для надежности и отслеживания результата выполнения и ошибок.

 Скрипту не важно существует ли сама папка или параметр в реестре, всё необходимое будет настроено.
 Это удобно, если испортили настройки или удалили случайно папку, или еще что то.
 Файл desktop.ini всегда создается с нуля с нужными атрибутами и параметрами по молчанию.
 Так же на папку устанавливаются стандартные атрибуты и параметры безопасности, как в оригинале + дополнительные параметры.
 Параметры для запрета удаления папки не администратором или вывода запроса UAC.
 Изменение расположения папок осуществляется аналогично вручному действию через
 изменение расположения в проводнике + дополнительные действия.

 Если планируется изменение расположения папок для нескольких пользователей (аккаунтов) в одно место,
 то необходимо указывать в пути подпапку с именем пользователя, чтобы папки не оказались одни и те же для разных пользователей!
 Пример: D:\%UserName% или C:\111111\%UserName%
 Можно делать так и при одном пользователе.



    ╔══════╗
 ■══╝  10  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Перенос папки "temp" текущего пользователя, в любое другое место по вашему желанию.

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

 Один минус, если перенести папку на другой раздел или диск, отличный от системного, то утилита оценки
 быстродействия системы "winsat.exe" не сможет проанализировать размер диска и не выдаст результат теста!
 При переносе на RAM диск, который создается каждый раз с нуля, не будет толку от назначения прав.
 И права нужно указывать в настройках самого RAM диска, либо делать автоматизацию настройки прав на папки при запуске системы.
 Если переносить папки для всех учетных записей, запускайте и переносите отдельно для каждой учётной записи.

 Можете указать свой путь для переноса папки в файле \Presets.txt




    ╔══════╗
 ■══╝  11  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Перенос системной папки "temp", в любое другое место по вашему желанию.

 Аналогично с папкой "temp" текущего пользователя.
 Лучше указать путь назначения разный для системной папки "Temp" и для пользователей!
 Но настройки позволяют указать в одну папку!

 Разные папки temp сделаны MS для безопасности, так как одна системная, для системных приложений, и для выполнения приложениями с повышенными правами.
 А вторая папка для пользователя для выполнения под его пониженными или повышенными правами.
 Поэтому в скрипте при восстановлении расположений папок всё это учитывается, и назначаются везде оригинальные права, как задумано MS.
 А при изменении расположения задаются специальные права доступа, чтобы приложения работали корректно с временными файлами, не имея повышенных прав,
 но удалить саму папку можно только с правами администратора.
 Если у вас UAC всегда отключен, то эти нюансы уже не важны, так как и так всё уже разрешено.

 Можете указать свой путь для переноса папки в файле \Presets.txt

 Можно указать одну папку для всех temp, но лучше не нарушать изначальные условия MS


    ╔══════╗
 ■══╝  12  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Настройка быстрой загрузки

 Быстрая загрузка при завершении работы использует режим гибернации.
 Она нужна для быстрой загрузки Windows и использовавшихся программ.
 Но это часто приводит к различным проблемам, в том числе из-за отсутствия перезагрузки.
 Да и если вы используете много тяжёлых программ, то и быстрая загрузка будет медленнее обычной загрузки.
 По умолчанию параметр имеет значения = 1 (включена) и гибернации не касается, но зависит от неё!




    ╔══════╗
 ■══╝  13  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Настройка для пробуждения компьютера

 Настройка пробуждения компьютера для выполнения авто-обслуживания Windows по расписанию.
 Обслуживание - передача собранных данных и отчетов, обновление индексации поиска,
 оптимизация загрузки, очистка cистемного диска и др. Назначена по умолчанию на ночь.
 Если отключить, то дефрагментация, обслуживания файловой системы
 и др. реально важных действий будут выполняться по необходимости, во время простоя, как обычно.
 Но можно отключить обслуживание и выполнять его вручную из меню обслуживания в скрипте.



    ╔══════╗
 ■══╝  14  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Настройка интернет протокола IPv6

 Если отключить, останется только лупбэк для программ через IPv4.
 Отключение убирает 99% спама dns серверов и предупреждений в журнале событий от DNS Client Events (wpad и др.)
 Если в журнале событий в разделе предупреждений не копятся предупреждения от этого спама,
 или вас это не напрягает, то не отключайте его.
 Если вы не используете IPv6, то отключение не должно вызвать проблем.
 По умолчанию этого параметра нет, но его значение при этом считается = 0 (включено)



    ╔══════╗
 ■══╝  15  ╚══════════════════════════════════════════════════════════════════════════════════════════════■

 ■ Меню Управления Модерн Приложениями Apps/Appx в Windows 10 x64/x86 1809-2004

 Используется для Установки/Перерегистрации/Удаления/Закачки Модерн Приложений (Apps/Appx).

 Под Apps в скрипте имеется в виду - Установленные приложения
 Под Appx в скрипте имеется в виду - Файлы Appx приложений (Appx/Msix/AppxBundle/MsixBundle)

 Удаление (Деинсталляция) Store Apps у всех пользователей, файлы остаются только у Системных приложений!
 Поэтому Store Apps можно будет установить только через магазин либо после закачки файлов, либо если их самостоятельно положить в папку для Appx.
 Скрипт подхватывает лицензии .xml и сертификаты .cer, сертификаты устанавливаются только на время установки, затем удаляет (так сделано намеренно).
 Чтобы скрипт не удалял сертификаты, их нужно установить вручную самостоятельно. Тогда скрипт считает, что вам нужен установленный сертификат.

 Начало Имени файла Лицензии xml должно быть такое же как и начало имени файла Appx до символа "_", если он есть в имени файла Appx.
 Пример: Файл: abc.appx или abc_ffff.appx;  Лицензия: abc_License.xml или abc.xml, то есть поиск будет вестить по "abc", следующие символы не играют роли.
 Для полной офлайн установки Appx, без подключения к сети, требуется офлайн лицензия xml и все зависимые Framework, указанные в его манифесте.

 Можно добавлять свои Appx/Apps в список аналогично. Файл со списком установленных Apps можно получить из меню.
 Если приложение установлено, то при выборе "установить" происходит перерегистрация, она может исправить разные проблемы с приложением.
 Можно указать и заблокированные для удаления системные приложения. Но Всё на ваш риск!
 Их можно восстановить, но всегда есть вероятность, что не восстановится! Но у нас таких ситуаций не было.

 Удаление выполняется легальными методами, стандартными командлетами PowerShell, после разблокировки их в базе StateRepository-Machine.srd
 Восстанавливает блокирующий триггер в базе после его удаления, понимает несколько типов триггеров.
 Удаление ярлыков с рабочего стола и таскбара, названия и количество ярлыков роли не играют.
 Добавляются подразделы реестра с именем пакетов PackageFamilyName (Store) в раздел реестра: ...\AppxAllUserStore\Deprovisioned (для исключения их автоустановки).
 Отключение установки системных Apps удалением раздела в ...\AppxAllUserStore\InboxApplications, правами доступа, очисткой восстанавливающихся параметров задачей.
 Необходимый комплекс мер для достижения идеального результата.

 "Задача автоочистки" выполняется до входа пользователя, не использует файлы. Все команды указываются внутри задачи, скорость выполнения 0.1-0.3 сек
 Это необходимо для того, чтобы после завершения обновления и во время первой загрузки Windows, до первого входа пользователя,
 удалить восстановленные обновлением параметры обновленных и удалённых системных Apps - Это очень важно.
 Иначе некоторые будут установлены обратно, а из-за долгих попыток установки остальных заблокированных Apps,
 Windows не будет давать оболочке (проводнику) запускаться (До 10 минут черный экран каждую загрузку).
 Вручную тоже не запускается! Нужно либо установить все системные Apps обратно, либо удалить параметры!
 Задачу изменить, отключить, удалить можно только под правами системы, сделано так специально! Но есть Возможность Запустить задачу.
 Скрипт проверяет задачу каждый раз при выполнении любого действия с любыми Apps, и сам Создает/Изменяет/Удаляет задачу при необходимости.

 Эти 3 Apps лучше оставить:
 1. Microsoft.Windows.StartMenuExperienceHost  # Меню Пуск (2004) (если удалить не будет пуска, нужна замена, но при попытке запуска его: win или ctrl+win, будет ошибка. Чтобы не было ошибки надо отключать службы управления Appx, а эти последствия надо проверять)
 2. Microsoft.Windows.ShellExperienceHost      # Центр уведомлений (если удалить не будет шторки с уведомлениями)
 3. windows.immersivecontrolpanel              # Системные Настройки UWP (если удалить не будет Модерн Настроек)

 Эти 2 спорно:
 1. Microsoft.Windows.CloudExperienceHost      # Требуется для создания новой учётной записи пользователя (Нужен для первого входа в учётную запись, если не предустановлены настройки конфиденциальности в NTUSER.DAT или нет запрета запуска этих настроек в ГП)
 2. E2A4F912-2574-4A75-9BB0-0D023378592B       # AppResolverUX Нужен для управления Apps в некоторых не известных мне случаях.

 Удаление скриптом не приводит к ошибкам или нарушению целостности Windows! Приложения будут обновляться, но не будут устанавливаться обратно!
 При установке скриптом системных Apps - всё восстанавливается обратно. Алгоритмы универсальные, и работают на версиях 1809-2009 (20H2).
 Переименованные папки системных Apps будут пропускаться, с выводом сообщения об этом. так что восстановить их можно только тем, чем вы их изменяли.

 Если скачанный Appx не ставится, значит что то ему не хватает, обычно зависимых пакетов Framework, либо не подходит к системе, и др. факторы.
 Нужно смотреть описание ошибки и по логам. С Apps/Appx очень много всяких нюансов.

                                                    ──┐
 [10] = Удалить Все    | Указанные для Удаления Apps  │ ◄ Тут имеется в виду "Деинсталляция"  (Группа Вариантов для управления Apps)
 [20] = Установить Все | Указанные для Установки Apps │ ◄ Перерегистрация/Регистрация (Если не найдено, ищет Appx в папке скрипта и ставит, определяет по названию папки)
                                                    ──┘
                                                    ──┐
 [30] = Скачать Все    | Настроенные для Закачки Appx │ (Группа Вариантов для управления Appx)
 [40] = Установить Все | Найденные Appx в подпапках   │
 [50] = Удалить Все    | Найденные/Настроенные Appx   │ ◄ "Деинсталляция" настроенных для закачки Appx, скачанных и установленных (имя определяет по манифесту внутри appx) Тут Имейте в виду, например, если просто скачаете Mагазин, и он будет установлен, то этот вариант удалит установленный Магазин любой версии!
 [60] = Очистить Папку | Files\Appx\ от подпапок      │ ◄ Удаление подпапок с файлами
                                                    ──┘
                                                    ──┐
 [80] = Показать Имена | Автоочиcтки + Проблемы Apps  │ ◄ Выводит информацию по восстановленным параметрам удалённых системных приложений, по состоянию задачи Автоочистки, и подготовленных (Staged), но не зарегистрированных новых версиях Apps
 [800] = Очистить Параметры                           │ ◄ Выполняет удаление параметров, чтобы не дать установится удалённым системным Apps. Это же делает задача. (На всякий случай, в основном для проверки работы задачи)
 [222] = Исправить Проблемы                           │ ◄ Попытка Зарегистрировать подготовленные (Staged), но не зарегистрированные новые версии Apps (Бывает приложение не смогло обновиться до конца и может вообще перестать работать, это баг) Но Может не помочь, так как не все проблемы мне известны.
                                                    ──┘
 
 Некоторые версии Appx поддерживают определённые версии Windows. Особенно это важно стало после выхода Windows 11. Перед скачиванием этого не узнать.
 Для основного файла Appx можно указать какую версию скачивать скрипту или выбрать из до/после указанной версии.
 Примеры указания версий уже заданы в файле Presets.txt у Appx файлов. Если подходящая версия не будет найдена - будет пропуск закачки и всех его зависимых Appx.

 Пример: ? 5.0.0.1 - указывает выбрать для W11 эту верию или новее, а для W10 последнюю версию, но старее этой (знак "вопроса")
 Пример: < 5.0.0.1 - указывает выбрать последнюю версию старее этой (знак "меньше")
 Пример: > 5.0.0.1 - указывает выбрать последнюю версию новее этой (знак "больше")
 Пример:   5.0.0.1 - указывает выбрать именно эту версию (без знака)

 Без версии - выбирается последняя версия



    ╔══════╗
 ■══╝  16  ╚══════════════════════════════════════════════════════════════════════════════════════════════■


 ■ Настройка нескольких включённых локальных/доменных аккаунтов. В которые входили хотя-бы один раз (они будут иметь .DAT файлы кустов реестра).
   Текущий аккаунт и частично Дефолтный профиль будут настраиваться всегда. В главном меню показывает имена аккаунтов, которые будут полностью настроены!

 При настройке других аккаунтов за один раз, не закрепить папки в "Быстром доступе" Проводника. Всё остальное смог сделать настраиваемым.
 Для переноса Папок пользователя для других аккаунтов, необходимо чтобы в пресете в конце пути была указана переменная: %UserName%. Иначе будет пропуск настройки.
 Так как расположения этих папок в итоге должны отличаться.

 При настройке, лучше чтобы другие аккаунты были не залогинены! Чтобы ничего не могло помешать настройке.
 Сразу после настройки можно входить в эти аккаунты или создавать другие аккаунты. Если аккаунт был залогинен, то в него надо перезайти. Лучше конечно перезагрузиться.

 Метод настройки:
 1. При запуске скрипта создаётся глобальная переменная, со всеми локальными/доменными аккаунтами: SID, Имя, расположение профиля (берётся из реестра, поэтому было ли изменено имя или расположение не важно).
    Далее скрипт использует эти данные.

 2. Подгружаются кусты реестра сразу у всех выбранных локальных/доменных аккаунтов, если не залогинены. По тем же путям, как делает Windows, только без временной символической ссылки на Classes, из-за ограничения.
    Скрипт сам перенаправляет на Classes. Кусты не выгружаются! При логине такого аккаунта, Windows сама выгружает эти кусты и подгружает снова, так как пути те же самые.
    Для дефолтного профиля Куст реестра подгружается только в момент его первой настройки, и по окончании работы скрипта выгружается, чтобы не блокировать файл куста.
    Если дефолтный профиль настраивается только частично, то его куст подгружается в момент настройки и после сразу выгружается, каждый раз, с отображением этого действия.
    Частичная настройка дефолтного профиля нужна, когда текущая настройка Windows влияет на аккаунты, которые будут созданы в будущем.

 3. При настройке, если указано настроить другие аккаунты, функции Set-Reg и Set-LGP перенаправляют все HKCU во все HKU\SID, и все HKCU\Software\Classes в HKU\SID_Classes.
    Для дефолтного профиля не будут настраиваться Classes, нет куста, и без нужного SID не имеет смысла.
    Каждый раз проверяется наличие подгруженного куста. Если его нет, то пытаются его один раз подгрузить.
    Если куст не подгрузится по любой причине, этот куст будет отключён из проверки и настройки, и далее будет пропускаться.

 4. Изменены все функции, которые при настройке затрагивают разделы реестра в HKCU и папки профилей.
    При выполнении функций все действия будут повторяться поочерёдно для всех указанных профилей аккаунтов: папок и ключей реестра.




