- Как в Windows 10 ограничить права доступа к реестру для отдельных пользователей
- Реестр Windows 10
- Что такое реестр и зачем он нужен.
- История.
- Где хранится файл реестра.
- Как войти в Редактор реестра.
- Структура реестра.
- Каких типов бывают параметры реестра.
- Разрешения реестра в Windows 10
- Решение
- Windows 10 — Как получить полный доступ к конкретной записи реестра для редактирования или удаления.
- Как изменить владельца ветки реестра Windows 10.
Как в Windows 10 ограничить права доступа к реестру для отдельных пользователей
Чтобы исключить возможность применения твиков на корпоративных компьютерах, системные администраторы ограничивают права на редактирование реестра или отключают к нему доступ. Вы можете сделать то же самое на домашнем компьютере, но в более мягкой форме, ограничив пользователям доступ только к конкретным разделам или даже ветвям реестра. Это нетрудно, нужно только помнить, что все устанавливаемые вами разрешения могут наследоваться, то есть распространяться на вложенные элементы раздела или подраздела.
А теперь к делу.
Откройте командой regedit редактор реестра и перейдите к нужному вам ключу, пусть это будет HKLM\Software\Microsoft\Windows\CurrentVersion\Run , отвечающему за добавление элементов автозагрузки на глобальном уровне. Если же вы хотите ограничить доступ к ветке HKCU , то вам нужно будет войти в соответствующую учетную запись и выполнять действия уже в ней.
Итак, кликните ПКМ по разделу и выберите в меню «Разрешения».
В открывшемся окошке в блоке «Группы или пользователи» укажите пользователя, а если его там нет, нажмите «Добавить».
Далее «Дополнительно».
Далее «Поиск» и выберите в нижней области окна «Выбор «Пользователи» или «Группы»» учетную запись, для которой желаете ограничить доступ. Чисто для примера мы выбрали текущего Администратора.
Внизу окна разрешений нажмите «Дополнительно».
И выберите в открывшемся окне нужного пользователя. Как видите, сейчас юзер Администратор имеет к ключу полный доступ. Нажмите «Отключение наследования».
После «Преобразовать унаследованные разрешения».
После этого у вас станет доступной кнопка «Изменить», нажмите ее.
В новом окне кликните по ссылке «Отображение дополнительных разрешений»,
а когда они станут доступны, тип в выпадающем меню выберите «Запретить» и установите птички для нужных разрешений.
Например, если вы хотите запретить пользователю создавать подразделы и устанавливать значение параметров, установите галки в пунктах «Задание значение» и «Создание подраздела», нажмите «OK», заново включите наследование (можно, кстати и не включать, если на предыдущем шаге вы применили эти разрешения к объектам и контейнерам только внутри этого контейнера) .
Если вы или юзер, для которого вы задали ограничения, теперь попробуете создать в подразделе Run новый подраздел или параметр, то получите ошибку.
Реестр Windows 10
Что такое реестр и зачем он нужен.
Реестр Windows представлен в виде иерархично организованной базы данных, где хранятся параметры и настройки всех установленных на компьютер программ, служб и операционной системы в целом (например, профили конкретных пользователей или информация об установленном устройстве). При запуске или работе в каком-либо приложении ОС обращается к данным реестра, так как именно в нем записаны все необходимые для работы данные. Даже сам запуск ПК невозможен без обращения к данным системного реестра.
Разработчики ОС Windows намеренно скрыли файлы реестра от глаз рядового пользователя, т.к. любые действия (изменение, удаление) могут привести к необратимым последствиям всей системы.
Чтобы не нарушить нормальную работу вашего компьютера с ОС Windows 10 не удаляйте записи из реестра пока не убедившись в их вредоносности либо неактуальности.
Для того чтобы избежать нежелательного вмешательства в реестр опытные пользователи могут воспользоваться способом описанном в статье «Как запретить использование редактора реестра (regedit.exe)».
История.
Впервые в Windows 3.1 была применена древовидная система организации данных (1992 год). Правда реестр состоял всего из одной ветки. Тогда же и появилась программа Regedit (позволяющая просматривать и редактировать реестр).
Следующая версия реестра вышла в 1993 году и предназначалась для работы Windows NT 3.1. Реестр содержал уже 4 раздела.
В дальнейшем назначение реестра не менялось. Реестр использовался в качестве основной базы данных для ОС и программ. Изменениям в реестре подвергались лишь названия файлов, а также их местоположение.
Где хранится файл реестра.
Чтобы найти непосредственно место хранения файлов реестра перейдите C:\Windows\System32\Config\ . Файлы формирующие реестр %SystemRoot%\System32\config хранятся по указанному пути.
Доступ к этим файлам ограничен в целях защиты от случайного изменения или удаления.
В ранее существовавших ОС Windows была реализована возможность автоматического создания резервных копий реестра. Действие это осуществлялось автоматически раз в 10 дней. Применительно же к Winidows 10 версия 1803 с мая 2018 года бекап реестра создавался с нулевым размером, а в версии 1809 был полностью отключен и пользователю теперь необходимо самостоятельно создавать резервную копию реестра на случай если он будет поврежден и его нужно будет восстановить. О том, как создать точку восстановления в Windows 10 читайте в этой статье.
Как войти в Редактор реестра.
Чтобы найти и увидеть файлы, входящие в состав реестра, воспользуйтесь программой Редактор реестра вызвав ее через диалоговое окно « Выполнить ». Нажмите комбинацию Win+R → в строку открыть впишите regedit → нажмите OK .
Далее появится предупреждение Контроля учетных записей, где необходимо подтвердить разрешение на внесение изменений нажатием кнопки Да .
Перед вами появится Редактор реестра.
Редактор можно запустить с панели задач. Для этого в нижней левой части экрана нажмите Поиск (значок в виде лупы) и введите regedit .
Вам будут предложены действия, которые можно выполнить. Нажмите Открыть или Перейдите к расположению файла (вы будете направлены в Папку с ярлыками системных программ, отсюда и можно запустить Редактор реестра).
Программу regedit можно найти на диске, где установлена система. В нашем случае заходим на диск С → находим папку Windows → приложение regedit . Путь будет выглядеть следующим образом C:\Windows\regedit . Запустите программу двойным нажатием левой кнопки мыши.
Помимо стандартных способов просмотра и управления файлами реестра можно воспользоваться сторонними программами, которые имеют такие полезные функции как сканирование, ручная и автоматическая очистка, исправление ошибок и другие.
Структура реестра.
Структура реестра организована в виде иерархической модели. Верхний уровень реестра представлен разделами, которые включают подразделы и параметры. Параметры – это те, данные необходимые для работы ОС или программ, представленные файлами. Для их упорядочения используются разделы.
Ниже представим названия стандартных разделов реестра и их краткое назначение.
HKEY_CLASSES_ROOT или HKCR – важный раздел реестра, защищенный от редактирования, содержит основную информацию о файлах.
HKEY_CURRENT_USER или HKCU – здесь хранится информация о пользователе, под которым осуществляется вход в систему (личные папки, параметры персонализации и т.д.).
HKEY_LOCAL_MACHINE или HKLM – важный раздел реестра и самый большой по своему объему. Здесь содержатся аппаратные настройки всей системы (драйвера, параметры ОС).
HKEY_USERS или HKU – раздел, содержащий данные о профилях пользователей и профиле по умолчанию.
HKEY_CURRENT_CONFIG или HKCC – раздел с данными о конфигурации используемого оборудования при запуске системы. По сути не является полноценным разделом, т.к. является ссылкой на раздел HKLM.
Для того чтобы увидеть подразделы корневых папок, нажмите на стрелочку, которая покажет параметры и их значение.
Каких типов бывают параметры реестра.
Раздел и подраздел может состоять из ноля, одного или нескольких параметров. У каждого параметра есть — имя, тип и значение и все эти части параметра всегда располагаются в названном строго определённом прядке. Например, [WallppaperOriginX] [REG_DWORD] [0x0000000 (0)] .
Данные параметров реестра могут быть разных типов.
Разрешения реестра в Windows 10
Приложение, работающее как не администратор в Windows 7, имеет права на чтение / запись для HKEY_LOCAL_MACHINE , но, видимо, не в Windows 10.
Многие приложения хранят вещи в HKEY_LOCAL_MACHINE которые обычно предназначены для всех пользователей, и они отлично работают (как Visual Studio) без запуска в качестве администратора, но не моего приложения.
Как я могу сделать свой собственный доступ к приложению HKEY_LOCAL_MACHINE без необходимости запускать его от имени администратора?
Проблема в том, что RegCreateKeyEx() а также RegOpenKeyEx() вернуть ERROR_ACCESS_DENIED в Windows 10, когда я запускаю приложение как обычный пользователь, но они работают нормально, если я запускаю его как администратор. Я не хочу запускать приложение в качестве администратора только для этого.
Обновить
Основываясь на комментариях, приложение без прав администратора имеет доступ только для чтения к HKLM, и я подтвердил, что при вызове приложения только с операциями чтения READ, и они могут читать, но следует отметить, что Windows 7 также не имеет доступа на запись, но мое тестовое приложение делает отлично работает в Windows 7. Вот код
Я не знаю, почему вышеупомянутое работает в Windows 7, но мой главный вопрос — где мы должны хранить глобальные настройки, которые применяются ко всем пользователям в Windows 10?
Да, я могу создать записи реестра через установщик, обладающий правами администратора, но мое приложение все равно захочет обновить некоторые настройки! Должны ли мы хранить это локально на диске сейчас?
Вся конфигурация в приложении должна быть применима ко всем пользователям.
Решение
Как я уже говорил в моих комментариях выше, вам нужно создать все ключи, которые вам нужны в HKLM, в вашем установщике (который должен быть запущен с повышенными правами), а затем изменить защиту, чтобы они могли быть доступны приложению, работающему со стандартными разрешениями (т.е. как член группы BUILTIN\Users и работает без поднятия).
Вот код для «снятия защиты» с ключа реестра. Код, написанный в блокноте, может не скомпилироваться, и, очевидно, немного хакерский, извините.
Служебная функция BuildAce (изначально отсутствовала, извините за это):
Служебная функция AddOrRemoveACE:
Служебная функция AddOrRemoveRegKeyACE (возвращает код ошибки):
А теперь появилась функция предоставления доступа к ключу реестра всем в группе «Пользователи». Возвращает TRUE в случае успеха:
Windows 10 — Как получить полный доступ к конкретной записи реестра для редактирования или удаления.
Публикация: 5 Сентябрь 2018 Обновлено: 26 Февраль 2020
В многопользовательской системе такой как Windows 10, администратор может предоставить или аннулировать разрешение вносить изменения для любых пользователей. Это касается и реестра Windows при удалении или редактировании.
Что же делать, если вы не можете изменить или удалить важный параметр реестра, просто необходимо сменить владельца ветки реестра! Достаточно сменить владельца один раз и вам будет предоставлен полный контроль.
После прочтения, вы получите возможность менять владельца для любого раздела реестра после чего сможете вносить нужные вам правки и изменения в реестре.
Как изменить владельца ветки реестра Windows 10.
Примечание: Ваша учетная запись пользователя должна иметь права администратора.
Вы, возможно уже сталкивались с проблемой при удалении или внесения изменений для записи реестра, получая сообщение «Не удается удалить. Ошибка при удалении ключа», «Не удается удалить все выделенные параметры» «Ошибка при записи нового параметра» и тд.. Это происходит потому, что вы не имеете достаточных прав для редактирования или удаления данного раздела реестра.
Будучи администратором, вы можете легко обойти эту проблему и использовать неограниченные права, для удаления разделов, параметров или модифицировать реестр с помощью твиков. Все, что вам нужно, это дать разрешение на владение разделом реестра конкретному пользователю:
Давайте предположим, вы выбрали ключ «Attributes», который находится в разделе реестра:
Изменив запись «Attributes», мы удалим Панель быстрого доступа из проводника Windows, но если вы попытаетесь изменить ее, вы получите сообщение, «Не удаётся изменить параметр «Attributes» Ошибка при записи нового параметра».
Изменить владельца для определенного раздела реестра Windows 10.
Шаг 1. Кликните правой кнопкой мыши на разделе реестра (папке) в которой находится нужный вам параметр (ключ) реестра и выберите в контекстном меню «Разрешения».
Шаг 2. В открывшемся окне нажмите на кнопку «Дополнительно».
Шаг 3. В окне дополнительных параметров безопасности, Вы видите, что владельцем данного раздела и объектов в нем является «Система».
Шаг 4. В строке Владелец нажмите надпись «Изменить».
Шаг 5. В диалоговом окне «Выбор: Пользователь или Группа» нажмите кнопку «Дополнительно».
Шаг 6. В следующем окне нажмите кнопку «Поиск».
Шаг 7. В нижней части окна найдите и кликните мышкой надпись «Администраторы» (см. картинку) и нажмите «Ок».
Шаг 8. Вернувшись в окно «Выбор: Пользователь или Группа», снова нажмите кнопку «ОК».
Шаг 9. В окне «Дополнительных параметров безопасности» необходимо установить флажки в два чекбокса (см картинку ниже):
- Заменить владельца подконтейнеров и объектов
- Заменить все записи разрешений дочернего объекта наследуемыми от этого объекта
Шаг 10. Нажмите кнопку «Применить» → «ОК». Подтвердите запрос безопасности.
Шаг 11. Вы вернетесь к диалоговому окну «Разрешение для Группы». Выберите группу «Администраторы», в разрешениях группы необходимо также установить флажки в чекбоксы в пункте «Полный доступ», «Чтение» и нажмите «Применить» → «ОК».
Все, теперь вы сможете вносить изменения или удалить ключ в этой ветке реестра. Если вам потребуется изменить другой раздел реестра вам придется повторить все действия снова.
Теперь вы знаете, как получить полный доступ к конкретной записи реестра для редактирования или удаления, не забывайте делать резервную копию реестра если что то пойдет не так.