Windows Product Policy – меняем политику продукта, добавляем русский в Windows Enterprise G без телеметрии и больше…

в 8:05, , рубрики: Enterprise G, EnterpriseG, microsoft, Product Policy, timeweb_статьи, windows

Сегодня я хочу начать разговор о редко обсуждаемой в сети, но крайне интересно технологической особенности ОС Windows – о политике продукта (далее буду назвать её оригинальным названием Product Policy). Каким образом Microsoft решает, сколько RDP сессий возможно одновременно открыть на ОС (почему в IOT их 2)? Где сказано, что у издания Windows Enterprise G может быть лишь английский или китайский языковой пакет? Где определено максимальное количество процессоров и памяти, максимальное количество подключений к расшаренной сетевой папке, как решается поддерживает ли ОС RDMA, требует ли SMB Signing, отключаются ли SMB1, Defender и Cortana. Да практически все компоненты и отличия разных изданий Windows контролируются именно через Product Policy, и пора бы нам разобраться, что это такое, где хранится, как изменять, и к чему приведут изменения.

Это лишь часть тех значений Product Policy для некоторых изданий, на которых остановился мой взгляд. Об этих параметрах (точнее об их части) будет следующая статья, сегодня цель этой картинки привлечь ваше внимание в комментарии - что именно интересно обсудить

Это лишь часть тех значений Product Policy для некоторых изданий, на которых остановился мой взгляд. Об этих параметрах (точнее об их части) будет следующая статья, сегодня цель этой картинки привлечь ваше внимание в комментарии - что именно интересно обсудить

Я расскажу об инструменте, позволяющем не только смотреть, но и изменять Product Policy, поговорим о Product Policy Editor, рассмотрим, где хранятся текущие значения Product Policy в Windows, и почему они возвращаются к исходным значениям, ну и, конечно, о том, можно ли как-то поменять это всё раз и навсегда для своей ОС, навсегда отключив нелюбимый Defender, разрешив неограниченное количество RDP сессий.  Ну и, конечно, cделаем ранее невозможное добьёмся русского интерфейса для интересного издания, описанного мной в наделавшей шума статье Windows 11 Enterprise G – Что за издание для правительства Китая и зачем оно вам? Судя по огромному интересу читателей именно к Windows Enterprise G, я начну с неё, а другие аспекты Product Policy, сравнение параметров между изданиями расскажу в другой статье, там же поясню свою мысль о том, что теперь «все издания нужны, все издания равны», мы можем включить ранее выключенные и отключить ненужные компоненты в любых изданиях, например, разрешить многое в самом лёгком Starter, или поотключать ненужное в любимом мной IoT Enterprise LTSC.

Итак, Product Policy это список разнообразных параметров, определяющих работу тех или иных компонентов ОС. Список совсем не малый, в Windows 11 24H2 насчитывает 615 таких пунктов, а в Windows 10 22H2 – 534 пункта. В любом издании все эти параметры определены в файле WindowsSystem32spptokensskusEDITIONEDITION-ppdlic.xrm-ms, где на месте слова EDITION в имени каталога и файла значится название SKU издания (Professional, EnterpriseG, IoTEnterpriseS, Cloud, etc) или тип лицензии (например, csvlk-pack). Данный файл у каждого издания свой, имеет все параметры, определяемые Product Policy, идёт внутри Install.wim и применяется к образу при установке, и при каждой перезагрузке ОС. Он подписан цифровой подписью, так что его модификации будут обнаружены службой sppsvc. При загрузке содержимое этого файла загружается в реестр в ключ HKLM SYSTEMCurrentControlSetControlProductOptionsProductPolicy, и именно отсюда ОС и берёт значения по ходу работы.

Как же посмотреть на список параметров и их значения? Можно ли их изменять?

Существует интересная программа Windows Policy Editor, давно разрабатываемая энтузиастами MyDigitalLife. Она доступна в том числе в исходниках и умеет работать не только с онлайн системой, но и с оффлайн образами. Вы можете менять любые параметры из утилиты:

Windows Product Policy Editior

Windows Product Policy Editior

Однако, чтобы записать значение для онлайн ОС (не образ или подмонтированный реестр), вам потребуется перезагрузка с режимом SetupType=1, иначе будете получать ошибку сохранения изменений:

Нельзя менять политику онлайн, только в Setup Mode
Нельзя менять политику онлайн, только в Setup Mode

Итак, я перезагружаюсь в Setup Mode и снова запускаю Product Policy Editor. Один из любопытных параметров называется Kernel-MUI-Language-Allowed, в издании Enterprise G его значение выставлено на zh-CN; en-US. У всех остальных изданий значение имеет EMPTY (именно текстом слово EMPTY). Если это поле изменить – в реестре через утилиту и в файле политик в WindowsSystem32spptokensskus, а также отключить службу sppsvc, то мы сможем установить любой Language Pack на Windows Enterprise G (и Windows 10 и Windows 11, как 32-бит, так и 64-бит). Для этого в Product Policy Editor найдём параметр Kernel-MUI-Language-Allowed, зададим ему значение EMPTY, сохраним значение выбрав Save changes to the registry.

Далее, как я уже говорил, нам необходимо отредактировать файл, в котором определены требования лицензии к изданию. Для EnterpriseG сразу после установки это файл C:WindowsSystem32spptokensskusEnterpriseGEnterpriseG-ppdlic.xrm-ms, а если вы активировали ОС через KMS, сменив серийник на KMS ключ, то имя файла лицензии изменилось на C:WindowsSystem32spptokensskuscsvlk-packcsvlk-pack-ppdlic.xrm-ms. В этом файле хранятся все особенности издания, в нашем случае мы хотим изменить значение ключа Kernel-MUI-Language-Allowed, заменив в нём zh-CN; en-US на EMPTY. Для этого придётся похимичить с NTFS правами доступа на этот файл или запускать редактирование с правами System. Я по старинке используя утилиту NSUDO с параметрами -U:T -P:E запускаю CMD.exe, из командной строки, получаю права системы, после чего могу отредактировать данный файл в блокноте.

NSUDO позволяет запустить процесс из под NT AUTHORITYSYSTEM

NSUDO позволяет запустить процесс из под NT AUTHORITYSYSTEM
Необходимо найти кусок с Kernel-MUI-Language-Allowed и заменить в нём zh-CN; en-US на EMPTY.

Необходимо найти кусок с Kernel-MUI-Language-Allowed и заменить в нём zh-CN; en-US на EMPTY.

Наконец, мне необходимо отключить службу sppsvc, запустив из той же CMD с правами системы редактор реестра REGEDIT, я заменю значение ключа с 2 на 4 (отключу запуск службы).

Заменить 2 (авто) на 4 (отключен)
Заменить 2 (авто) на 4 (отключен)

Далее просто перезагружаюсь и спокойно меняю язык интерфейса на русский. Вуаля.

Русский язык в Windows 11 Enterprise G

Русский язык в Windows 11 Enterprise G
Для 32-битной Windows 10 и Windows 11 использовал те самые образы, которые готовил и предлагал желающим на тестирование в статье  Windows 11 Enterprise G – Что за издание для правительства Китая и зачем оно вам? / Хабр (habr.com), ничего переустанавливать не требуется. Следует, правда, понимать, что отключив SPPSvc и изменив файл лицензии, установка дальнейших кумулятивных обновлений станет невозможной. Небольшие обновления, не затрагивающие лицензии ставятся без проблем.

Для 32-битной Windows 10 и Windows 11 использовал те самые образы, которые готовил и предлагал желающим на тестирование в статье Windows 11 Enterprise G – Что за издание для правительства Китая и зачем оно вам? / Хабр (habr.com), ничего переустанавливать не требуется. Следует, правда, понимать, что отключив SPPSvc и изменив файл лицензии, установка дальнейших кумулятивных обновлений станет невозможной. Небольшие обновления, не затрагивающие лицензии ставятся без проблем.

В следующий раз расскажу подробнее о Product Policy для других целей (список возможно интересных задач озвучен в первом абзаце статьи и приведён в виде таблицы). Если остались вопросы, отвечу в комментариях. Интересна дискуссия о редактировании Product Policy для других изданий (Windows IoT Enterprise LTSC, Windows Server, Azure Stack HCI), об этом больше как раз в следующей статье, постараюсь осветить основные вопросы из комментариев. Ставьте лайк, подписывайтесь.

Автор: akibkalo

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js