Сброс локальных групповых политик в Windows 10 и 11
Сброс локальных GPO лечит типичный сценарий: предыдущий админ «накрутил» групповые политики, и система стала капризничать — блокируется командная строка, не открывается диспетчер задач, запрещается запуск .exe, а доступа к настройкам нет. Если после обновления перестал запускаться Word или похожая программа, чаще всего помогает именно сброс этих самых локальных GPO. Дальше — три надёжных способа это сделать.
Что такое локальные групповые политики
В Windows есть три слоя GPO:
- Локальные — хранятся на самом ПК в
C:\Windows\System32\GroupPolicyиGroupPolicyUsers. - Доменные — приходят с Active Directory, перезаписывают локальные.
- Site/OU — уровни в AD-иерархии.
Когда мы говорим «сбросить локальные» — сбрасываем только первый слой. Доменные применятся заново при ближайшем gpupdate или рестарте.
Способ 1: gpedit.msc — ручной откат
Этот метод отлично подойдёт, если вы чётко представляете, какая конкретная политика подложила вам свинью. И, конечно, если у вас установлена Windows Pro/Enterprise – ведь без доступа к редактору тут никуда.
- Win+R →
gpedit.msc. - Чтобы просмотреть, какие политики сейчас применены, зайдите в View → All settings, затем отсортируйте список по параметру «State = Enabled».
- Для каждой проблемной политики просто сделайте двойной клик и установите её в режим «Not Configured».
- Закрыть редактор.
- Выполнить
gpupdate /forceв CMD (админ).
Минус здесь очевиден: если политик много, придётся попотеть. Зато плюс весомый — работаешь точечно, не затрагивая ничего лишнего.
Способ 2: полный сброс через удаление Registry.pol
А вот это наш самый любимый способ! Особенно, когда голова идёт кругом, и совершенно непонятно, что именно пошло не так. Главное, он прекрасно работает вообще на всех редакциях Windows, даже на Home!
REM Запуск от администратора
RD /S /Q "%WinDir%\System32\GroupPolicyUsers"
RD /S /Q "%WinDir%\System32\GroupPolicy"
gpupdate /force
shutdown /r /t 0
Что происходит:
- Этот шаг фактически удаляет все каталоги с локальными политиками как для самого компьютера, так и для всех пользователей.
gpupdate /forceпересоздаёт их пустыми.- После перезагрузки система применит совершенно новую, пустую конфигурацию политик.
Крайне важно понимать: этот способ сбрасывает ТОЛЬКО локальные GPO. Доменные же политики вернутся на место при следующем запуске или обновлении. Но если ваш ПК не состоит в домене, то вы получите абсолютно чистое, дефолтное состояние.
Способ 3: secedit — сброс политик безопасности
Если вся загвоздка кроется в политиках безопасности — тех, что касаются паролей, аудита или прав доступа — этот вариант выручит.
secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
Команда восстанавливает Security Settings из шаблона по умолчанию defltbase.inf, который ставится с Windows. Все изменения в «Security Settings» откатываются, но Administrative Templates остаются.
Таблица: какой способ когда применять
| Ситуация | Способ |
|---|---|
| Знаю конкретную политику | gpedit.msc → Not Configured |
| Windows Home без gpedit | Удаление Registry.pol |
| После чужих экспериментов, много наслоений | Удаление Registry.pol |
| Сломалось что-то в Security Settings | secedit /configure |
| Компьютер в AD-домене | Править GPO на DC, не локально |
| Последние шансы, есть точка восстановления | System Restore |
PowerShell-скрипт для массового сброса
Когда нужно быстро пройтись по нескольким ПК в одном отделе, и они находятся в рабочей группе (то есть не в домене), мы всегда используем наш готовый скрипт.
# Reset-LocalGPO.ps1
#Requires -RunAsAdministrator
$paths = @(
"$env:WinDir\System32\GroupPolicy",
"$env:WinDir\System32\GroupPolicyUsers"
)
foreach ($p in $paths) {
if (Test-Path $p) {
Remove-Item $p -Recurse -Force
Write-Host "Removed $p"
}
}
& secedit /configure /cfg "$env:WinDir\inf\defltbase.inf" /db defltbase.sdb /verbose
& gpupdate /force
Write-Host "Done. Reboot recommended."
Запускаем его через PsExec или WinRM на всех нужных машинах. Быстро и удобно.
Особенности в AD-домене
Если ПК в домене — вопрос обычно не в локальных политиках, а в доменных. Локальный сброс не даст эффекта дольше следующего gpupdate. Правильный путь:
- На клиенте —
gpresult /h gpo-report.html, смотрим, какая доменная GPO применяется. - На DC —
gpmc.msc, правим конкретную GPO (Not Configured) или убираем Link. - На клиенте —
gpupdate /force. - Если настройка упорно не хочет откатываться, значит, политика была применена в режиме Enforced, буквально «зататуировав» реестр. Что делать в таком случае? Нам понадобится создать отдельный обратный GPO, который явно установит параметр в Disabled.
Реальный кейс: заблокированный CMD на 40 ПК
Как-то раз, буквально в 2024 году, к нам обратился интересный клиент — небольшая бухгалтерская фирма в Тушино. Всего 40 рабочих мест. Оказалось, их бывший админ, увольняясь, решил «на прощание» включить для всех сотрудников опцию «Prevent access to the command prompt» через локальные GPO. Заметьте, домен у них не был развёрнут! Что же случилось дальше? Сотрудники попытались запустить свой привычный 1С-скрипт для обновления курса валют и… получили сообщение: «Командная строка отключена администратором». Вся работа моментально встала колом!
Что мы сделали? Организовали экстренный выезд, провели быструю инвентаризацию, на ходу подготовили PowerShell-скрипт с WinRM и в итоге массово сбросили локальные GPO сразу на всех 40 ПК. Управились всего за 1,5 часа! Кстати, этот экстренный выезд обошёлся клиенту в 24 000 руб. Но это ещё не всё: заодно мы развернули для них полноценный мини-домен на базе Windows Server, обеспечив нормальное централизованное управление GPO. Теперь подобная ситуация у них просто не сможет повториться.
Грабли
- Забыли reboot. Часть политик применяется только при старте ОС.
- Запуск не от администратора. Удаление GroupPolicy требует прав.
- Ожидание чуда в домене. Локальный сброс не помогает, доменная GPO вернёт всё. Лечите на DC.
- Удалили не ту папку.
GroupPolicyиGroupPolicyUsers— неPoliciesв реестре. Не трогайтеHKLM\SOFTWARE\Policies, если не уверены. - Antivirus блокирует. На некоторых ПК SentinelOne / Kaspersky ругаются на массовое удаление — делайте временное исключение.
Резервная копия перед сбросом
Перед тем как удалять каталоги политик, я всегда снимаю копию текущего состояния. Если после сброса пользователи скажут «раньше работало вот это», будет откуда вернуть нужный параметр, а не восстанавливать его по памяти.
REM Копия каталогов локальных политик (Registry.pol, скрипты, служебные файлы)
robocopy "%WinDir%\System32\GroupPolicy" "C:\GPO-backup\GroupPolicy" /E
robocopy "%WinDir%\System32\GroupPolicyUsers" "C:\GPO-backup\GroupPolicyUsers" /E
REM Выгрузка текущих политик безопасности в шаблон
secedit /export /cfg C:\GPO-backup\secpol-before.inf
Команда secedit /export по документации Microsoft предназначена как раз для резервного копирования политик безопасности локального компьютера и переноса их на другую машину. Ключ /cfg обязателен — это путь к выходному шаблону. Если нужны не все разделы, добавляю /areas с перечнем через пробел: securitypolicy (политики учётных записей, аудит, параметры безопасности), user_rights (права пользователей), group_mgmt (ограниченные группы), regkeys, filestore, services. Для машины в домене есть ключ /mergedpolicy — он выгружает объединённые доменные и локальные параметры безопасности, и по такому файлу удобно понять, что пришло с контроллера домена, а что задано локально.
Для административных шаблонов удобнее утилита LGPO.exe из Microsoft Security Compliance Toolkit. Она умеет выгрузить локальную политику в формат резервной копии GPO, импортировать и применить Registry.pol, шаблоны безопасности и файлы расширенного аудита, а также переводить Registry.pol в текстовый формат «LGPO text» и собирать Registry.pol обратно из такого текста. Я перевожу старый Registry.pol в текст, нахожу в нём нужные строки и собираю новый файл только из них — так после полного сброса возвращаются два-три действительно нужных параметра, а не весь накопленный мусор.
Частичный откат политик безопасности
Полный secedit /configure по defltbase.inf откатывает сразу всё: пароли, аудит, права пользователей. Если проблема только в правах (например, у группы пользователей отобрали право «Разрешать вход в систему через службу удалённых рабочих столов»), я ограничиваю применение ключом /areas и беру за основу сохранённый шаблон:
secedit /configure /db C:\Windows\Temp\reset.sdb /cfg C:\GPO-backup\secpol-before.inf /areas user_rights /log C:\Windows\Temp\reset.log
Что важно знать о ключах. /db обязателен. /cfg импортирует шаблон в эту базу, причём без /overwrite шаблон добавляется к уже сохранённому в базе, а не заменяет его, поэтому для каждого отката я беру новую пустую .sdb. Если /areas не указан, применяются все разделы, определённые в базе. Ключ /log задаёт файл журнала: по нему видно, какие параметры применить не удалось. /quiet подавляет вывод на экран и в журнал — в скриптах массового сброса я его не ставлю, чтобы журнал остался.
Как проверить результат сброса
После сброса я не верю на слово, а смотрю итоговый набор политик (RSoP):
gpupdate /target:computer /force
gpresult /r /scope computer
gpresult /h C:\Temp\rsop.html /f
gpresult /z > C:\Temp\policy.txt
gpupdate /forceприменяет заново все параметры, а не только изменившиеся./target:computerили/target:userограничивают обновление одной частью, по умолчанию обновляются обе./waitпо умолчанию ждёт 600 секунд;0— не ждать,-1— ждать бесконечно. В скриптах массового сброса задаю значение явно, чтобы следующая команда не стартовала раньше времени./bootи/logoffнужны для расширений, которые обрабатываются только при старте компьютера или входе пользователя: установка ПО через политику, перенаправление папок.gpresult /rдаёт сводку,/v— подробные параметры,/z— вообще всё, включая параметры с более низким приоритетом. Вывод/vи/zбольшой, его удобнее сразу перенаправить в файл./hсохраняет HTML-отчёт,/fперезаписывает файл, если он уже есть./hнельзя совмещать с/u,/p,/r,/vи/z. На ARM64-версиях Windows с/hработает только gpresult из SysWOW64.
Проверяю, что в отчёте больше нет параметров, которые я сбрасывал. Если какой-то остался — в HTML-отчёте рядом с ним указан объект GPO, который его задаёт, и дальше разговор уже о доменной политике, а не о локальной.
FAQ — сброс локальных GPO
Дальше — вопросы, которые мне чаще всего задают после сброса локальных политик: что делать на Windows Home, почему в домене всё возвращается и можно ли откатить только политики безопасности.
- Можно ли сбросить политики без доступа к gpedit?
- Да, на Windows 10/11 Home gpedit.msc отсутствует. Сброс делается удалением Registry.pol из C:\Windows\System32\GroupPolicy\Machine и User, далее gpupdate /force.
- Что делать в AD-домене, если политика засела?
- В домене клиент всегда переконфигурируется с DC. Локальный сброс поможет только если ПК изолирован. Для доменных ПК: правим политику на DC, делаем gpupdate /force на клиенте или выводим из домена и обратно.
- Сломал ли я систему после удаления Registry.pol?
- Нет. Registry.pol — это кэш локальных настроек GPO. Windows его пересоздаст при следующем запуске gpupdate. Системные настройки не пропадут, только те, которые были применены через локальные политики.
- Как сбросить только политики безопасности?
- secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose — восстанавливает настройки по шаблону по умолчанию для Windows.
- Помогает ли reset от точки восстановления?
- Да, если есть точка до применения проблемной политики. Откат через System Restore возвращает реестр и Registry.pol. Но это крайняя мера — проще удалить Registry.pol руками.
Источники
- Microsoft Learn: Registry Policy File Format — назначение и формат файлов Registry.pol.
- Microsoft Learn: secedit commands — параметры secedit /configure для сброса политик безопасности.
- Microsoft Learn: gpupdate — ключ /force и повторное применение политик.
