Работа с реестром c


Работа с реестром Windows на языке c#

Реестр Windows и язык c#

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

Структура и ключи реестра

Основными элементами реестра являются: ключи и значения, а данные представлены и структурированы в виде дерева.

Дерево имеет 5 корневых ключей реестра (root keys)

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

HKEY_CURRENT_CONFIG — (Win98 и NT-разрядных версий Windows)

HKEY_PERFORMANCE_DATA (для NT-разрядных версий Windows, нельзя увидеть в редакторе реестра Windows)

HKEY_DYN_DATA (Win 9x/Me)

Каждый корневой ключ реестра может содержать любое количество вложенных разделов и подразделов (Subkeys), но при этом есть ограничение по вложенности (не более 512 уровней).

В свою очередь каждый subkeys может содержать любое количество параметров.

Параметр имеет: имя(name), тип(type) и значение(value)

Где хранятся файлы реестра?

файл реестра windows представлен в виде нескольких файлов, которые хранятся в папке config

C:\WINDOWS\system32\config

Каждый файл реестра хранит информацию из определенного раздела реестра. Так же существует ещё несколько файлов, которые хранятся в основной папке пользователя, так например файл NTUSER.dat, в котором храниться профиль текущего пользователя, об это чуть позднее.

Имя файла Раздел реестра Описание
SAM HKEY_LOCAL_MACHINE\SAM SAM
SECURITY HKEY_LOCAL_MACHINE\SECURITY Безопасность
software HKEY_LOCAL_MACHINE\SOFTWARE Софт
system HKEY_LOCAL_MACHINE\SYSTEM Система
default HKEY_LOCAL_MACHINE\DEFAULT Параметры по умолчанию

Как открыть реестр в windows?

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

Путь к файлу программы regedit

C:\WINDOWS\regedit.exe

Чтобы открыть реестр нужно проделать следующие действия:

Нажмите на кнопку «Пуск» -> найдите в меню пункт «Выполнить»
затем введите: regedit, либо используйте горячие клавиши Win+R
кнопка Win расположена между Ctrl и Alt

Работа с реестром используя язык C#

.NET предлагает несколько классов для работы с реестром, один из них
class Registry

В проекте обращаться к данному классу можно, как по полному имени Microsoft.Win32.Registry, либо использовать using Microsoft.Win32;

Данный класс позволяет получить доступ ко всем корневым ключам реестра (root keys).

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

поле root key
ClassesRoot HKEY_CLASSES_ROOT
CurrentConfig HKEY_CURRENT_CONFIG
CurrentUser HKEY_CURRENT_USER
Users HKEY_USERS
PerformanceData HKEY_PERFORMANCE_DATA
DynData HKEY_DYN_DATA.LocalMachine
PerformanceData HKEY_PERFORMANCE_DATA

Пример на языке c#:

Выбираем root keys CurrentUser, тем самым открываем root ключ HKEY_CURRENT_USER;

RegistryKey regKey = Registry.CurrentUser;

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

Более подробно об этих классах поговорим в следующей статье.

Читайте также:

codeby.net

.NET | Реестр

45

C# и .NET --- Многопоточность и файлы --- Реестр

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

Компонентам СОМ тоже требуется сохранять информацию о себе в реестре для того, чтобы клиенты могли к ним обращаться. Среда .NET Framework и предлагаемая в ней концепция установки с нулевым воздействием (zeroimpact installation) делает реестр чуть менее существенным для приложений, поскольку создаваемые с ее помощью сборки получаются полностью самодостаточными, т.е. никакой информации в реестр для них помещать не требуется, даже если они являются разделяемыми.

Вдобавок в .NET Framework предлагается концепция изолированного хранилища (приложения могут хранить информацию, касающуюся каждого пользователя, в файлах) и .NET Framework самостоятельно заботится об отдельном хранении данных для каждого зарегистрированного в системе пользователя.

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

Например, если приложение должно появляться в диалоговом окне Add/Remove Programs (Установка и удаление программ) панели управления, потребуется внести соответствующие записи в системный реестр. Системный реестр также может понадобиться для обеспечения обратной совместимости с унаследованным кодом.

Как и следовало ожидать от такой обширной библиотеки, как .NET, в ней поставляются классы, которые позволяют получать доступ к реестру. Таких классов два — Registry и RegistryKey, и оба они находятся в пространстве имен Microsoft.Win32. Прежде чем переходить к рассмотрению этих классов, давайте вкратце ознакомимся со структурой самого реестра.

Реестр имеет иерархическую структуру, во многом похожую на структуру файловой системы. Обычно для просмотра и изменения содержимого реестра применяются две утилиты: regedit и regedt32. Утилита regedit является стандартной и поставляется во всех версиях Windows, начиная с Windows 95. Утилита regedt32 входит в состав Windows NT и Windows 2000, и по сравнению с regedit менее дружественная к пользователю, но зато она позволяет получать доступ информации, связанной с безопасностью, которую regedit просматривать не позволяет.

В Windows Server 2003 эти утилиты были объединены в единый новый редактор, который называется просто regedit. В ходе обсуждений здесь имеется в виду утилита regedit, поставляемая в Windows 7, которую можно запустить, введя regedit в диалоговом окне для запуска программ либо в командной строке.

На рисунке показано, как выглядит окно regedit при запуске этой утилиты в первый раз. На этом рисунке видно, что regedit имеет пользовательский интерфейс в стиле "дерево/список", который похож на интерфейс проводника Windows и в точности отражает иерархическую структуру самого реестра. Однако вскоре будут показаны и некоторые важные отличия:

В файловой системе узлы верхнего уровня представляют разделы дисков — С:\ , D:\ и т.д. В реестре эквивалентом разделов дисков являются разделы реестра (registry hive). Изменять существующие разделы не допускается — они являются фиксированными и всего их семь, хотя в интерфейсе regedit видны только пять из них, которые перечислены ниже:

HKEY_CLASSES_ROOT (HKCR)

содержи

professorweb.ru

Работа с реестром из командной строки — Документация Работа с реестром Windows 1

Работа с реестром возможна не только через утилиту regedit.exe, но и напрямую из командной строки с помощью утилиты REG, она поддерживает все возможности, которые имеет программа regedit.exe. И более того – она также поддерживает несколько особенных функций. Полезна в том случае когда работа с regedit по каким либо причинам невозможна.

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

Основной синтаксис

В общем виде синтаксис команды REG выглядит следующим образом:

REG <процедура> [список параметров] 

Всего существует одиннадцать процедур, которые способна выполнять директива REG: QUERY, ADD, DELETE, COPY, SAVE, LOAD, UNLOAD, RESTORE, COMPARE, EXPORT, IMPORT. Каждая из этих процедур имеет, как правило, собственный набор параметров.

При вызове из командной строки директива REG пересылает в окружение операционной системы так называемый код возврата: сообщение об успешном или неуспешном выполнении операции. Если код возврата равен 0, это означает, что операция была выполнена успешно, если же она завершилась с ошибкой, код возврата будет равен 1.

Более подробные сведения об использовании утилиты REG вы можете получить, набрав в командной строке директиву REG /?, чтобы получить информацию о какой-либо из перечисленных процедур, воспользуйтесь командой REG <процедура> /?.

Сокращения

Для удобства ввода применяются сокращения названий веток реестра. Все сокращения представлены в таблице ниже:

Сокращения названий веток реестра
Ветка Сокращение
HKEY_CLASSES_ROOT HKCR
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_CURRENT_CONFIG HKCC

Вывод содержимого ветвей (QUERY)

Команда REG QUERY отправляет в системный реестр Windows запрос о содержимом ветвей, ключей, подразделов или параметров, и выводит на экран результат обработки этих запросов. В общем виде синтаксис данной команды записывается следующим образом:

REG QUERY [\Компьютер\]Путь [/v Параметр | /ve] [/s] 

В составе директивы могут использоваться следующие параметры:

  • Компьютер – имя компьютера в локальной сети, если директива предназначена для обработки на удаленном компьютере. В случае, если этот параметр опущен, команда выполняется на локальном компьютере.
  • Путь – полный путь к целевому разделу реестра в виде корень\ключ\подраздел, где корень - сокращенное обозначение ветви реестра (HKLM, HKCU, HKCR, HKU или HKCC), а ключ\подраздел - полный путь к искомому подразделу в иерархии реестра, включая все вложенные подразделы.
  • /v – запрос о содержимом указанного раздела реестра.
  • Параметр – вывести имя и значение запрашиваемого параметра в указанном разделе.
  • /ve – запрос стандартного параметра с пустым именем.
  • /s – вывести список всех подразделов данного раздела реестра вместе с их содержимым.

В качестве примера получим содержимое ветки в которой хранятся закрытые ключи квалифицированных электронных подписей:

reg query "HKLM\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-21-2889205033-3114528180-1522031737-1000\Keys" 

Примечание

Лучше вводить путь в кавычках.

Будет выведен примерно такой результат:

HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-21-2889205033-3114528180-1522031737-1000\Keys def.key REG_BINARY 300E0C0C415A415A415F6E6F70617373 HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-21-2889205033-3114528180-1522031737-1000\Keys\2015ZAO_ 

Как видно из вывода, в реестре компьютера находится всего один контейнер 2015ZAO_.

Экспорт и импорт веток реестра (EXPORT и IMPORT)

Для экспорта используется команда EXPORT. Синтаксис команды:

REG EXPORT <имя_раздела> <имя_файла> [/y] 
  • имя_раздела – полное имя подраздела реестра в одном из выбранных корневых разделов.
  • имя_файла – имя .reg файла, который получится после экспорта.
  • Параметр /y в конце команды позволяет выполнение замены существующего файла без запроса подтверждения.

Экспортируем контейнеры закрытых ключей на рабочий стол:

reg export "hklm\SOFTWARE\Crypto Pro\Settings\Users\S-1-5-2-1-2889205033-3114528180-1522031737-1000\Keys" C:\Users\Dmitry\Desktop\keys.reg /y Операция успешно завершена. 

Вся ветка с контейнерами успешно экспортирована на рабочий стол и сохранена в файле keys.reg. Теперь импортируем ее обратно.

Примечание

Команда доступна только для выполнения на локальном компьютере.

Для импорта используется команда IMPORT. Синтаксис команды:

REG IMPORT <имя_файла> 

Выполним:

reg import C:\Users\747\Desktop\keys.reg Операция успешно завершена. 

Напомню, что для экспорта ветки на другом компьютере, необходимо будет изменить в файле keys.reg путь к ветке реестра с учетом разрядности операционной системы и SID текущего пользователя. Подробнее об импорте и экспорте закрытых ключей смотрите в Руководстве по работе с реестром ОС Windows в разделе Где хранятся ключи(закрытый ключ сертификата) в реестре? [1739].

Создание резервной копии реестра (SAVE и RESTORE)

Для резервного копирования и восстановления реестра используются следующие команды (типы операций) утилиты REG SAVE и REG RESTORE:

REG SAVE <имя_раздела> <имя_файла> [/y] REG RESTORE <имя_раздела> <имя_файла> 

Примечание

В данному разделе перечислены основные команды утилиты REG для получения более подробной информации обратитесь к ресурсам, перечисленным в разделе Дополнительные ссылки

Дополнительные ссылки

regedit.readthedocs.io

Реестр Windows — Документация Работа с реестром Windows 1

Реестр Windows (англ. Windows Registry), или системный реестр — иерархически построенная база данных параметров и настроек в большинстве операционных систем семейства Microsoft Windows [2].

В реестре хранятся данные, которые необходимы для правильного функционирования Windows. К ним относятся профили всех пользователей, сведения об установленном программном обеспечении и типах документов, которые могут быть созданы каждой программой, информация о свойствах папок и значках приложений, а также установленном оборудовании и используемых портах [1].

Открытие реестра

Поскольку файлов в реестре несколько, его нельзя открыть, например, в текстовом редакторе и внести какие-либо коррективы. Для работы с ним требуется специальная программа – редактор реестра, который является встроенным компонентом операционной системы Windows и вызывается путем ввода команды Regedit [4].

Существует несколько способов открыть редактор реестра.

Способ №1 – Открытие через утилиту «Выполнить»:

  1. Выбрать Пуск → Выполнить, либо нажать сочетание клавиш Win+R (Win — клавиша, между Ctrl и Alt в нижнем ряду клавиатуры, обычно на ней изображен значок Microsoft Windows ;
  2. В открывшимся окне ввести команду regedit;
  3. Нажать клавишу ОК.

Рис. 1 – Открытие через утилиту «Выполнить»

Способ №2 – Открытие через поиск по меню «Пуск»:

  1. Открыть меню Пуск;
  2. Ввести в строке поиска regedit и запустить найденный файл, который отобразится в верхней части Пуска.

Рис. 2 – Открытие через поиск по меню «Пуск»

С другими способами можно ознакомиться в статье Три способа открыть редактор реестра Windows.

Структура реестра

Реестр имеет иерархическую структуру, которая напоминает файловую систему жесткого диска – с его каталогами, подкаталогами и файлами. Но называются элементы реестра по-другому: верхний уровень иерархии составляют разделы, каждый из которых может содержать вложенные подразделы, а также параметры. Именно в параметрах хранится основное содержимое реестра, разделы служат лишь для группировки схожих по назначению параметров [4].

Рис. 3 – Редактор реестра

Далее приведен краткий перечень и краткое описание стандартных разделов реестра. Максимальная длина имени раздела составляет 255 символов.

HKEY_CURRENT_USER

Данный раздел является корневым для данных конфигурации пользователя, вошедшего в систему в настоящий момент. Здесь хранятся папки пользователя, цвета экрана и параметры панели управления. Эти сведения сопоставлены с профилем пользователя. Вместо полного имени раздела иногда используется аббревиатура HKCU.

HKEY_USERS

Данный раздел содержит все активные загруженные профили пользователей компьютера. Раздел HKEY_CURRENT_USER является подразделом раздела HKEY_USERS. Вместо полного имени раздела иногда используется аббревиатура HKU.

HKEY_LOCAL_MACHINE

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

HKEY_CLASSES_ROOT

Является подразделом HKEY_LOCAL_MACHINE\Software. Хранящиеся здесь сведения обеспечивают выполнение необходимой программы при открытии файла с использованием проводника. Вместо полного имени раздела иногда используется аббревиатура HKCR. Начиная с Windows 2000, эти сведения хранятся как в HKEY_LOCAL_MACHINE, так и в HKEY_CURRENT_USER.

Раздел HKEY_LOCAL_MACHINE\Software\Classes содержит параметры по умолчанию, которые относятся ко всем пользователям локального компьютера. Параметры, содержащиеся в разделе HKEY_CURRENT_USER\Software\Classes, переопределяют принятые по умолчанию и относятся только к текущему пользователю.

Раздел HKEY_CLASSES_ROOT включает в себя данные из обоих источников. Кроме того, раздел HKEY_CLASSES_ROOT предоставляет эти объединенные данные программам, разработанным для более ранних версий Windows. Изменения настроек текущего пользователя выполняются в разделе HKEY_CURRENT_USER\Software\Classes. Модификация параметров по умолчанию должна производиться в разделе HKEY_LOCAL_MACHINE\Software\Classes. Данные из разделов, добавленных в HKEY_CLASSES_ROOT, будут сохранены системой в разделе HKEY_LOCAL_MACHINE\Software\Classes. Если изменяется параметр в одном из подразделов раздела HKEY_CLASSES_ROOT и такой подраздел уже существует в HKEY_CURRENT_USER\Software\Classes, то для хранения информации будет использован раздел HKEY_CURRENT_USER\Software\Classes, а не HKEY_LOCAL_MACHINE\Software\Classes.

HKEY_CURRENT_CONFIG

Данный раздел содержит сведения о профиле оборудования, используемом локальным компьютером при запуске системы.

Примечание

Реестр 64-разрядных версий Windows подразделяется на 32- и 64-разрядные разделы. Большинство 32-разрядных разделов имеют те же имена, что и их аналоги в 64-разрядном разделе, и наоборот. По умолчанию редактор реестра 64-разрядных версий Windows отображает 32-разрядные разделы в следующем узле: HKEY_LOCAL_MACHINE\Software\WOW6432Node

Файлы реестра на жестком диске

Основные файлы, отвечающие за формирование реестра хранятся в папке %SystemRoot%\System32\Config\. Обычно это C:\Windows\System32\Config\ и в зависимости от версии ОС их состав может несколько различаться.

Файл, хранящий личные настройки пользователя, «скрыт» в папке соответствующей учетной записи, например, в C:\Documents and Settings\Dmitry. Также файлы, отвечающие за пользовательские настройки, могут храниться в:

  • C:\Documents and Settings\%Username%\(Ntuser.dat);
  • C:\Documents and Settings\%Username%\Local Settings\Application Data\Microsoft\Windows\ (UsrClass.dat).

Еще есть резервные копии файлов реестра, созданные системой, хранятся они в

  • C:\Windows\System32\config\RegBack – для Windows 7 и Server 2008;
  • C:\Windows\repair – для XP и Server 2003.

Примечание

По умолчанию операционная система делает резервные копии этих файлов раз в 10 дней с помощью планировщика задач.

Вспомогательные файлы для всех кустов за исключением HKEY_CURRENT_USER хранятся в системах Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003 и Windows Vista в папке %SystemRoot%\System32\Config.

Вспомогательные файлы для куста HKEY_CURRENT_USER хранятся в папке %SystemRoot%\Profiles\Имя_пользователя. Расширения имен файлов в этих папках указывают на тип содержащихся в них данных. Отсутствие расширения также иногда может указывать на тип содержащихся в файле данных.

Примечание

Куст (дерево) реестра (англ. hive) - это группа разделов, подразделов и параметров реестра с набором вспомогательных файлов, содержащих резервные копии этих данных.

Таблица 1 — Соответствие кустов реестра и вспомогательных файлов
Куст реестра Вспомогательные файлы
HKEY_LOCAL_MACHINE\SAM Sam, Sam.log, Sam.sav
HKEY_LOCAL_MACHINE\Security Security, Security.log, Security.sav
HKEY_LOCAL_MACHINE\Software Software, Software.log, Software.sav
HKEY_LOCAL_MACHINE\System System, System.alt, System.log, System.sav
HKEY_CURRENT_CONFIG System, System.alt, System.log, System.sav, Ntuser.dat, Ntuser.dat.log
HKEY_USERS\DEFAULT Default, Default.log, Default.sav

Примечание

Например, кусту HKEY_LOCAL_MACHINE\Software соответствует на жестком диске файл C:\Windows\System32\config\SOFTWARE.

Рис. 4 – Файлы реестра на жестком диске

regedit.readthedocs.io

Работа с реестром Windows – как и чем

Приветствую!

Тот, кто хоть раз пользовался штатным редактором реестра в операционной системе Windows, не понаслышке знает, насколько он неудобен.
Складывается впечатление, что его развитие закончилось в момент создания. От версии к версии операционной системы данный инструмент кочует в неизменном виде и даже в Windows 10 он столь же топорный.
Данный факт открыл широкое поле для сторонних разработчиков. Было создано множество утилит для работы с реестром, но сегодня я бы хотел рассказать о достаточно компактной и непритязательной программе под названием Registry Finder. Она бесплатна, поддерживает русский язык (файл необходимо скачать и расположить в директории с программой), имеет портативную версию (удобно носить на флешке), существует в версии как для x86, так и x64 битных операционных систем.

Среди преимуществ данной утилиты можно отметить:

  1. В интерфейсе утилиты имеется строка для быстрого перехода в нужный раздел. Теперь можно забыть об избыточных кликах мышкой, открывая раздел за разделом. Ко всему прочему адресная строка поддерживает сокращённые имена разделов, благодаря чему ввод, к примеру, HKEY_CURRENT_USER\… и HKCU\… будет отработан одинаково корректно.
  2. Имеется поддержка вкладок. Можно открыть несколько разных разделов одновременно и оперативно переключаться между ними, к примеру, для сравнения.
  3. Гибко настраиваемый поиск. По окончании открывается окно с результатами, в котором выделяются искомые ключи, разделы и параметры.
  4. Ведётся лог произведённых действий. Изменив параметр, вы можете быстро вернуться к первоначальному варианту. Это действительно удобно.
  5. Само собой, поддерживаются все базовые возможности работы с реестром: создание, удаление и изменение разделов и ключей, экспорт и импорт параметров реестра.

Программа отлично работает в Windows 10 (8, 8.1, 7, Vista, XP). Как и штатный редактор реестра, программа должна быть запущена от имени администратора. В ином случае некоторые разделы реестра будут доступны лишь для чтения.

Работа с системным реестром Windows требует некоторой подготовки и осторожности со стороны пользователя. Удаление или изменение жизненно важных параметров может привести к появлению неполадок в работе системы.
В этой связи перед любыми манипуляциями рекомендуется создать бэкап всего реестра или ветви, в которой будут произведены изменения. Бэкап можно сделать, к примеру, данным способом.
Мы рады, что смогли помочь Вам в решении поставленной задачи или проблемы.

В свою очередь, Вы тоже можете нам очень помочь.

Просто поделитесь статьей в социальных сетях с друзьями.

Поделившись результатами труда автора, вы окажете неоценимую помощь как ему самому, так и сайту в целом. Спасибо!

Опрос: помогла ли вам эта статья?  

(cбор пожертвований осуществляется через сервис Яндекс Деньги)

На что пойдут пожертвования \ реквизиты других платёжных систем

Привет.
Не секрет, что в экономике ныне дела обстоят не лучшим образом, цены растут, а доходы падают. И данный сайт также переживает нелёгкие времена :-(
Если у тебя есть возможность и желание помочь развитию ресурса, то ты можешь перевести любую сумму (даже самую минимальную) через форму пожертвований, или на следующие реквизиты:

Номер банковской карты: 5331 5721 0220 5546
Кошелёк Яндекс Деньги: 410015361853797
Кошелёк WebMoney: P865066858877
PayPal: [email protected]
QIWI кошелёк: +79687316794
BitCoin: 1DZUZnSdcN6F4YKhf4BcArfQK8vQaRiA93

Оказавшие помощь:
Сергей И. - 500руб
<аноним> - 468руб
<аноним> - 294руб
Мария М. - 300руб
Валерий С. - 420руб
<аноним> - 600руб
Полина В. - 240руб

Деньги пойдут на оплату хостинга, продление домена, администрирование и развитие ресурса. Спасибо.
С уважением, создатель сайта IT-Actual.ru

it-actual.ru

Советы по работе с реестром Windows 7

Наверх
  • Рейтинги
  • Обзоры
    • Смартфоны и планшеты
    • Компьютеры и ноутбуки
    • Комплектующие
    • Периферия
    • Фото и видео
    • Аксессуары
    • ТВ и аудио
    • Техника для дома
    • Программы и приложения
  • Новости
  • Советы
    • Покупка
    • Эксплуатация
    • Ремонт
  • Подборки
    • Смартфоны и планшеты
    • Компьютеры
    • Аксессуары
    • ТВ и аудио
    • Фото и видео
    • Программы и приложения
    • Техника для дома
  • Гейминг
    • Игры
    • Железо
  • Еще
    • Важное

ichip.ru

Работа с Редактором реестра — Документация Работа с реестром Windows 1

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

Прав доступа может не быть по нескольким причинам:

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

Во втором случае необходимо присвоить полные права и сменить владельца.

Получение полных прав и смена владельца

  1. Нажать правой кнопкой мыши на раздел и выбрать пункт «Разрешения»;

Рис. 10 – Вызов диалога работы с разрешениями

  1. Выделить текущего пользователя:
  • Если доступен флажок «Полный доступ», установить его и нажать кнопку «ОК. Этого может оказаться достаточно, если группа является владельцем раздела.

Рис. 11 – Открытие Полного доступа гурппам и пользователям

Если отсутствует необходимый пользователь, флажок «Полный доступ» недоступен или возникает сообщение об ошибке, переходите к пункту 3.

  1. В меню разрешений нажать кнопку «Дополнительно»;

Рис. 12 – Добавление или смена владельца

Примечание

Во время добавления разрешений и владельцев могут возникать сообщения об отсутсвии прав доступа. Данные сообщения можно смело игнорировать.

Перейти на вкладку «Владелец» и добавить текущего пользователя;

Рис. 13 – Выбор владельца

На вкладке «Разрешения» нажать кнопку «Добавить»;

Рис. 14 – Добавление разрешений владельцу

В поле «Введите имена выбираемых объектов» ввести имя текущей учетной записи и нажать кнопку «Проверить имена», затем нажать «ОК»;

Рис. 15 – Ввод имени выбираемых объектов

Рис. 16 – Проверка имен

Появится диалог разрешений. Поставить галочку напротив «Полный доступ» и нажать «ОК»;

Рис. 17 – Установка полного доступа текущему владельцу

После добавления владельца и назначения прав нажать клавишу F5 или «Вид → Обновить». Напротив непустого раздела появится треугольник, который означает, что у текущего пользователя есть права на доступ в него.

Рис. 18 – Доступ к подразделам

На рисунке 18 видно, что у текущего пользователя есть доступ к подразделу Keys, но нет прав на открытие разделов KeyDevices и Random. Треугольника напротив подраздела может не быть, если данный подраздел пуст.

Примечание

В Windows 8 и выше порядок работы с диалогом смены и добавления владельца немного отличается – владелец выбирается сверху.

Рис. 19 – Выбор/смена владельца в Windows 8 и выше [11]

Совет

Ручное добавление владельцев и прав доступа удобно, если нужно получить доступ всего к нескольким разделам. Если нужно получить доступ к большому количеству разделов, то гораздо целесообразнее воспользоваться утилитой PsExec.exe. Работа с данной утилитой рассматривается в разделе Работа через утилиту PsExec.

Работа через утилиту PsExec

Для запуска редактора реестра с полными правами от имени системы можно воспользоваться программой PsExec.exe.

  1. Скачайте утилиту PsExec.exe и скопируйте в корень диска C.
  2. Запустите командную строку от имени администратора. «Пуск → Выполнить → cmd».
  3. Введите в командную строку команду:
C:\PsExec.exe -i -s regedit.exe 

Запустится редактор реестра от имени системы, что задается параметром -s (параметр -i обеспечивает интерактивный запуск приложения)[11].

Если возникает сообщение об ошибке Couldn't install PSEXESVC service..., то необходимо отключить контроль учетных записей Windows (UAC):

  1. Меню «Пуск → Панель управления»;
  2. «Учетные записи пользователей → Изменение параметров контроля учетных записей»;
  3. Сдвинуть ползунок до самого низа — «Никогда не уведомлять»;
  4. Перезагрузить компьютер.

Рис. 20 – Отключение параметров контроля учетных записей (UAC)

В Windows Vista в диалоговом окне «Пуск → Панель управления → Учетные записи пользователей → Включение и отключение контроля учетных записей» снять галочку «Используйте контроль учетных записей для защиты компьютера».

В Windows 8 и выше для полного отключения контроля учетных записей (UAC) необходимо в реестре в ветке HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System присвоить параметру EnableLUA значение 0.

Рис. 21 – Отключение параметров контроля учетных записей (UAC) в Windows 8 и выше

Внимание

После отключения параметров контроля учетных записей (UAC) необходима перезагрузка.

regedit.readthedocs.io

Прямой распил реестра Windows — «Хакер»

Содержание статьи

 

Внедряемся в святая святых системы минуя стандартные механизмы

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

Забегая вперед, отмечу: тема эта интересна, но тут целый набор серьезных проблем. Хотя кто сказал, что нам это не по плечу? 🙂

С точки зрения операционной системы Windows, реестр — это уникальная кладовка. В этой своеобразно выстроенной иерархической базе данных хранятся настройки, данные, регистрационная информация и прочая хрень почти обо всем в системе, начиная с программ и заканчивая настройками конкретного пользователя. В реестре хранится практически все. Несмотря на то что некоторые программы предпочитают хранить свои настройки в ini-конфигах (особенно программы, написанные для Win 3.11. – Прим. ред.), сама Windows всю нужную информацию о самой себе считывает из реестра. Справедливости ради отметим, что в *nix-like операционных системах до сих пор господствует система хранения настроек во всевозможных конфигах.

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

К примеру, так называемые точки восстановления — это копии реестра. Они широко применяются пользователями при возникновении различных проблем как с операционной системой, так и с программным и аппаратным обеспечением.

Надо сказать, что 99% информации о реестре Windows — это описание основных ключей плюс советы, как с ними работать. Но как работает с реестром сама операционная система? И сможем ли мы эмулировать ее действия? Давай немного порассуждаем.

Реестр — одновременно и сильная и слабая сторона Windows. Сильная сторона реестра в том, что для разработчиков программного обеспечения отпадает необходимость манипулировать туевой хучей конфигов, как это, например, реализовано в никсах. Удобен реестр и для создателей COM-компонентов — система автоматом регистрирует такой компонент в реестре и облегчает задачу по его дальнейшему использованию.

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

Как Windows работает с реестром

Если в Windows 98 реестр могли починять все, кому это взбредет в голову, то начиная с Windows XP доступ к реестру имеют только пользователи с учетной записью администратора. В Vista+ доступ к реестру находится под защитой UAC. Оно и понятно.

Надо признать, что с выходом Win7 концепции безопасности при работе с реестром были пересмотрены в лучшую сторону. Например, под защитой находится ключевая ветвь реестра HKEY_LOCAL_MACHINE. В общем случае попытка что-то записать в нее будет перенаправлена в соответствующую ветку HKEY_CURRENT_USER для текущего пользователя.

Для работы с реестром напрямую Windows предлагает программисту целый набор WinAPI, которые должны быть знакомы любому системному разработчику, — это Reg*-функции, такие как RegOpenKey, RegQueryValue и так далее. В ядре Win это NtOpenKey, NtQueryValueKey и целый ряд других. Описывать их особого смысла нет — всю документацию по надлежащему использованию этих функций можно найти в MSDN.

Здесь стоит отметить вот что. Антивирусы и проактивки для контроля за пользовательскими действиями устанавливали перехваты на упомянутые функции, как в ядре, так и в юзермоде.

С выходом Win7 x64 ситуация изменилась, и я уже об этом как-то писал. Разработчики Windows решили отказаться от возможности перехватывать потенциально опасные функции в ядре Win. Теперь переменная KeServiceDescriptorTable в x64 больше экспортируется, да и переписать нужный участок кода не выйдет — PatchGuard не даст. Есть, конечно, садомазохистские решения по обходу этих ограничений — но там гемора будет больше, чем профита. Тем более что Microsoft предлагает удобные колбеки ObRegisterCallbacks для контроля за реестром.

 

INFO

Информации в Сети о структурах, описывающих основные файлы реестра, очень мало. И почти все они на английском. Начальные знания можно найти здесь. Кроме этого, хорошо про реестр написано в библии системщика «Внутреннее устройство Windows» от товарищей М. Руссиновича и Д. Соломона.

Но что же такое реестр на самом деле? Если заглянуть в папку WINDOWSsystem32config, то можно увидеть там несколько файлов: system, software, security, SAM и несколько других.

Это файлы реестра.

Файлы реестра Windows

Однако несправедливо будет говорить о реестре просто как о некоем сочетании файлов, загруженных в память. Многое из того, что содержит реестр, носит динамический характер, то есть ряд значений высчитывается на этапе загрузки самой системы, в первую очередь это касается определенных параметров железа. Например, таков подраздел реестра HKEY_DYN_DATA, данные которого при загрузке операционной системы размещаются в оперативной памяти и находятся там вплоть до завершения работы операционной системы. То же, кстати, можно сказать и о ключевом подразделе HKEY_LOCAL_MACHINE, который не имеет своего соответствующего файла на диске, но фактически формируется из других файлов реестра, таких как software, system и прочие.

Таким образом, реестр изнутри можно весьма приблизительно назвать «виртуальным сочетанием файлов реестра». После старта системы эти файлы находятся как в файле подкачки (paged pool), так и в невыгружаемой памяти (nonpaged).

Для того чтобы научиться работать с реестром напрямую, без знаний его внутренней структуры не обойтись никак. В целом Microsoft никогда не раскрывала тайны внутренней структуры файлов, составляющих реестр, поскольку это угрожает безопасности. По моим наблюдениям, все имеющиеся описания файлов реестра и его структуры (а их, кстати совсем чуть-чуть) — результаты изысканий пионэров-исследователей. Наиболее законченное, на мой взгляд, такое «исследование» можно взять здесь, принадлежит оно товарищу Питеру Норрису.

Не будем вдаваться сейчас в подробности организации и структуры реестра, дело это долгое, нудное и в рамки статьи точно не вписывается. Здесь важно уяснить, что реестр — иерархическая древоподобная структура, иногда также говорят, что она похожа на пчелиные соты.

Сразу огорчу: запросто пошаманить напрямую с реестром в юзермоде не получится, система не даст этого сделать, как это обычно бывает с файлами, занятыми другими процессами. Если попытаться извернуться, то можно только прочесть такой «занятый» файл, и то если угадать с флагами, с которыми он был открыт. К сожалению, записать в интересующий нас «файл реестра» информацию не выйдет. Кстати, фича с записью нужной информации в реестр может прокатить, если писать в реестровские *.BAK-файлы, они точно доступны под запись.

А вот из ядра не то что прочитать, но и записать нужную информацию в файлы реестра очень даже можно.

Итак, следи за рукой :).

Первое, что может прийти в твою светлую голову, — открыть файл реестра напрямую и что-то туда записать.

Теоретически так сделать можно, для этого нужно, во-первых, уметь работать с «занятыми» файлами (способы ищи в Сети) и, во-вторых, как я уже говорил выше, надо знать внутреннюю структуру файлов реестра. Метод этот довольно топорный, но, несмотря на свою бредовость, он вполне жизнеспособен, хотя его и трудно реализовать на практике (попробуй поэкспериментировать с ним самостоятельно).

Здесь же я предложу два способа, которые помогут тебе распилить реестр на мелкие кусочки.

Первый способ заключается в том, что для конфигурационного менеджера (Configuration Manager, часть операционной системы, если ты не в курсе) реестр есть не более чем набор строго определенных структур в операционной памяти, с которыми, как оказывается, очень даже легко работать. Какие это структуры, спросишь ты? HBASE_BLOCK, HHIVE, HBIN, HCELL, HMAP_ENTRY, HMAP_DIRECTORY, куча CM_* структур, используемых конфиг-менеджером для управления реестром. С точки зрения операционной системы, реестр — это просто набор регламентированных структур в оперативной памяти. К примеру, сигнатура «regf», определяющая «файл реестра», есть заранее определенная константа:

define HBASE_BLOCK_SIGNATURE 0x66676572 typedef struct _HBASE_BLOCK { ULONG Signature; //0x66676572 ULONG Sequence1; ULONG Sequence2; LARGE_INTEGER TimeStamp; .... }
А вот и сигнатура «regf»...

То есть смысл всего этого моего монолога в том, что существует шикарная возможность манипуляции с реестром на уровне операционной системы, но при этом не используя ее штатные средства. Как это возможно? Мы просто сэмулируем действия самой операционной системы, точно так, как она сама работает с реестром! Важно, как я уже говорил, понять, что для самой ОС реестр не более чем набор соответствующих структур в памяти.

Если у нас будет доступ к файлам реестра на уровне ядра, то чем мы хуже самой ОС, чтобы установить свой порядок?

И тут на сцене появляется наиболее интересный вопрос — как найти эти самые структуры в памяти? Верно, штатных средств системы для решения этого вопроса нет, поэтому придется выкручиваться по-хитрому.

Зная, как выглядят структуры, нужно вспомнить, что каждый файл, улей реестра, имеет свою константную сигнатуру. Например, «regf» — это 0x66676572. Для улья сигнатура будет равна 0xBEE0BEE0. Имея доступ к памяти из ядра, мы можем довольно легко найти эти сигнатуры в памяти, просто просканив ее. Еще можно просканить память в поисках сигнатуры «CM10» — именно она присваивается конфиг-менеджером блоку подкачиваемой памяти, который выделяется под структуру CMHIVE. Полагаю, найдя в памяти интересующий нас элемент, ты придумаешь, что делать с ним дальше :).

Как, к примеру, изменить значение ячейки реестра? Значение хранится в поле CM_KEY_VALUE->Data, поэтому, если у тебя возникнет задача изменить какое-либо поле в конкретном ключе реестра, ищи значение именно там:

 typedef struct _CM_KEY_VALUE { WORD Signature; // #define CM_KEY_VALUE_SIGNATURE 0x6B76 WORD NameLength; ULONG DataLength; ULONG Data; //<---------- данные ячейки будут здесь ULONG Type; WORD Flags; WORD Spare; WCHAR Name[1]; } CM_KEY_VALUE, *PCM_KEY_VALUE;

Второй вариант является своеобразной модификацией первого. Если знаешь, существует одна особенность при работе с реестром — все изменения, то есть «создание новых ключей / запись / удаление ключей», как правило, вступают в силу после перезагрузки системы (ну или после перезагрузки эксплорера, это такой хак-метод). До этого все изменения находятся словно в подвешенном, «dirty»-состоянии. Мало того, система при обращении с реестром общается с ним через кеш файловой системы. Это понятно — обращений к реестру может быть сотни в секунду, соответственно, полагаться при этом на быстродействие файловой системы неразумно, тут никакое быстродействие не спасет. Поэтому система и работает с реестром, что называется, виртуально, через кеш файловой системы. И тут, чтобы вытащить кишки реестра на свет, надо залезть в кеш! Как это делается, уже описывалось в тырнетах, в том числе и в www.xakep.ru.

Что сказать в итоге? Предложенная читателю в статье вариация на тему прямого контроля за реестром носит исключительно экспериментальный характер. Не спорю, она тяжеловата для практической реализации, и многие скажут, что уж лучше использовать нормальные WinAPI-функции, предназначенные для работы с реестром, — и будут в чем-то правы. Однако реализованная die_hard на деле либа, основанная на приведенных в статье принципах, будет обладать поистине термоядерной силой, неподвластной ни аверам, ни самой операционной системе.

Засим закончу. Удачного компилирования и да пребудет с тобой Сила!

 

WWW

Обязательна к прочтению статья Марка Руссиновича о реестре «Inside the Registry», нашелся даже русский перевод. Замечательная тулза для сбора информации о реестре: http://goo.gl/iSSVy.

Александр Эккерт, [email protected]

xakep.ru


Смотрите также



© 2010- GutenBlog.ru Карта сайта, XML.