- Чтения значений в реестре
- Решение
- Работа с реестром Windows на языке c#
- Реестр Windows и язык c#
- Структура и ключи реестра
- Где хранятся файлы реестра?
- Как открыть реестр в windows?
- Работа с реестром используя язык C#
- Все что необходимо знать о реестре Windows
- Реестр в операционных системах
- Где хранится реестр?
- Как открыть реестр?
- Через утилиту «Выполнить»
- Посредством поиска через меню «Пуск»
- Посредством проводника Windows
- Структура реестра
- Резервная копия всего реестра или отдельного раздела
- Восстановление реестра
- Восстановление из файла
- Слияние
- Импорт
- Восстановление с использованием live CD
- Чистка реестра
- Создание и удаление разделов и параметров через файл с расширением reg
- Создание подразделов или изменение параметров
- Удаление разделов реестра или параметров
Чтения значений в реестре
Чтения записи в реестре
Помогите добрые люди пожалуйста:cry: Ни в какую не могу прочесть запись в реестре Делаю так Dim.
Проверка наличия в реестре определенных значений
Доброго всем времени суток, решил поучить C#, и столкнулся с проблемой поиска значения реестра. с.
Поиск параметров в реестре и обнуление значений
Приветы! Суть в том,что необходимо все строки в тексте начинающиеся с «Имя заменить на .
Проблема чтения значений из Newalue и OldValue
Доброго времени суток) Столкнулся с проблемой чтения значений из Newalue и OldValue. Пытаюсь.
Можно начало считать разрядность ОС, потом уже и выбрать определенный варинат поиска.
Ну или сразу по 2 идти. Там он сам выведит где нет ошибки.
Тут посмотри: ссылка
Вроде как InternalCheckIsWow64 можно искать.
Или использовать IntPtr.Size — значение этого свойства равно 4 в 32-разрядном процессе и 8 в 64-разрядном процессе.
Проверил код на создание — раздела, ключа, значения:
Добавлено через 1 час 43 минуты
Вот код на чтение одного значения:
Решение
Alexandr_7, программа будет работать под любой платформой. В x86 нет виртуализации реестра и параметр будт проигнорирован, а под x64 он отключит виртуализацию и работа будет идти всегда с одним и тем же ключом.
Я же говорю что на 64битных ос это не будет работать так как ключ 32битной программы на 64битных виндовс помещается в подраздел WOW6432Node
Ах да. Очевидно забыл добавить что читать ключ мне нужно 32битного приложения но так чтобы работало и в 64битных windows. Я имею в виду есть ли вариант без проверки разрядности ос
Хотя я хочу попробывать не с ключем RegistryView.Registry64 а с RegistryView.Registry32
Может получется
И не работает. Точнее я не понимаю. Как я уже горил что в 64битных ос к пути ключа добавляется WOW6432Node (Честно не понимаю зачем так делать)
Но я точно знаю что инсталятор прпописывает путь ключа в Software\Enterbrain\RPGVXAce а не в Software\WOW6432Node\Enterbrain\RPGVXAce
Это уже ос перенаправляет. Ну и вот вопрос как делать чтение не проверяя на разрядность ОС
Ты сказал что использовать ключ RegistryView.Registry32
Не работает
Пробовал ключ RegistryView.Registry64 и тоже не работает
Добавлено через 3 минуты
Нет. Все работает. Это я немножко тупой. Вместо локал машин использую CurrentUser. Естественно не найдет.
Работа с реестром Windows на языке c#
The Codeby — одна из сильнейших Red Team в RU сегменте. Команда профессионалов, специализирующаяся на аудите информационных систем и тестировании на проникновение.
Мы предлагаем: Аудит веб-сайта компании, Аудит внешнего периметра, Аудит веб-приложения, Аудит внутренней корпоративной сети, Проверка ИБ-грамотности сотрудников, Анализ кода ПО, Аудит Wi-Fi и СКУД, Выявление уязвимостей ПО серверов и рабочих станций, Пентест инфраструктуры методом черного ящика. Подробнее .
Реестр 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
Каждый файл реестра хранит информацию из определенного раздела реестра. Так же существует ещё несколько файлов, которые хранятся в основной папке пользователя, так например файл 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
Чтобы открыть реестр нужно проделать следующие действия:
Нажмите на кнопку «Пуск» -> найдите в меню пункт «Выполнить»
затем введите: 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, с помощью него можно добавлять, удалять разделы и подразделы, а так же создавать параметры и получать их значения.
Более подробно об этих классах поговорим в следующей статье.
Все что необходимо знать о реестре Windows
Для работы операционной системы Windows должны использоваться различные сведения. Реестр представляет собой специальную базу данных. В нем имеется информация, касающаяся оборудования, программного обеспечения, а также многое другое. В процессе функционирования системы происходит постоянное обращение к этой информации. Она может изменяться или дополняться, в зависимости от конкретных действий. Подобные мероприятия происходят в автоматическом порядке и пользователю нет необходимости беспокоиться об их выполнении.
ВАЖНО: если Вы решили работать с реестром Windows, то предварительно создайте его копию. Неосторожные действия легко могут стать причиной серьёзных системных сбоев. В результате придется восстанавливать ОС или даже осуществить её переустановку.
Реестр в операционных системах
Чтобы продемонстрировать важность реестра, требуется сказать о простой статистике. В ходе запуска ОС сюда осуществляется около тысячи обращений, а в течение одного дня количество может достигнуть 10.000 и даже более. Достаточно запустить какую-либо программу, задать настройки или выполнить иные действия, чтобы информация в реестре была отредактирована.
Где хранится реестр?
Довольно часто можно услышать вопрос о расположении файлов. Реестр Windows располагается по директории C\Windows\System32\config. Здесь в качестве диска указан С, но для Вашего устройства ситуация может быть иной. Все зависит от того, куда именно установлена система.
Если рассматривать наиболее популярную ОС Windows 7, то файлы реестра здесь располагаются в специальных местах. Подобный момент требует к себе отдельного внимания:
- «HKEY_LOCAL_MACHINE\HARDWARE». Указанная ветка будет создаваться на основании того, какое именно подключено периферийное оборудование. Процесс является динамическим.
- «HKEY_LOCAL_MACHINE\BCD00000000» использует для своего создания специальный файл «%SystemRoot%\Boot\BCD».
- «HKEY_LOCAL_MACHINE\SYSTEM». Чтобы сформировать указанную ветку, применяется документ «%SystemRoot%\System32\config\ SYSTEM».
- «HKEY_LOCAL_MACHINE\SOFTWARE». Создание происходит на основании документа «%SystemRoot%\System32\config\SOFTWARE».
- «HKEY_LOCAL_MACHINE\SECURITY». В ветке происходит хранение параметров безопасности устройства и она создается из документа «%SystemRoot%\System32\config\SECURITY».
- «HKEY_LOCAL_MACHINE\SAM». Для создания применяется информация из документа, находящегося по адресу «%SystemRoot%\System32\config\SAM».
- «HKEY_USERS\DEFAULT». Формирование ветки реестра производится за счет документа «%SystemRoot%\System32\config\DEFAULT».
- Ветки реестра «HKEY_USERS\S-1-5-18», «HKEY_USERS\S-1-5-19» и «HKEY_USERS\S-1-5-20». Для их создания используется документ NTUSER.DAT, который лежит в различных директориях. Это «%SystemRoot%\System32\config\systemprofile\», «%SystemRoot%\System32\config\systemprofile\» и «%SystemRoot%\ServiceProfiles\NetworkService\».
- «HKEY_USERS\ ». С целью формирование происходит применение документа «%USERPROFILE%\NTUSER.DAT».
- «HKEY_USERS\ _Classes». В указанном случае, формирование производится в ходе использования документа «%USERPROFILE%\AppData\Local\Microsoft\Windows\UsrClass.dat».
Реестр имеет отдельные файлы, которые заслуживают к себе внимания – это резервные копии. Они необходимы в случае восстановления системы. Данные документы находятся по директории «%SystemRoot%\System32\config\RegBack». Если рассматривать ситуацию по умолчанию, то копия будет создавать один раз в 10 дней. Можно выполнить настройку подобного процесса – периодичности и времени запуска. Пользовательская часть реестра находится в документе %userprofile%\ntuser.dat.
Когда речь заходит о реестре ОС 32х и 64х разрядного типа, тут предусматриваются определенные особенности. В первом случае все папки являются единичными. Для 64х разрядов предусматривается разделение на 32х и, непосредственно, 64х разрядные разделы.
Как открыть реестр?
Для получения доступа можно использовать несколько способов и необходимо рассмотреть среди них наиболее популярные.
Через утилиту «Выполнить»
Подобный вариант можно назвать наиболее привлекательным, поскольку он сочетает в себе простоту и удобство. Требуется действовать в соответствии с рекомендациями:
- Зажимаем сочетание клавиш Win+R или запускаем утилиту «Выполнить» другим способом.
- Производим ввод regedit и нажимаем подтверждение. Крайне важно, чтобы подобное действие проводилось от имени администратора.
Посредством поиска через меню «Пуск»
Тут могут быть определенные отличия при работе с различными ОС. Например, для Windows 8 отсутствует классическое меню «Пуск». В любом случае, необходимо получить доступ к строке поиска. В неё требуется ввести regedit и запустить выданную программу.
Посредством проводника Windows
Поставлена задача найти конкретный файл в системой папке C\Windows (ранее уже говорилось о возможности использования другой буквы диска, в зависимости от места установки ОС). Нас интересует regedit. Его нужно найти в общем перечне и запустить.
Структура реестра
Реестр Windows включает в себя 5 ветвей. Каждая из них предусматривает хранение сведений конкретного типа. Данные разделы не разрешается изменять. Они не могут быть перенесены, переименованы или удалены. Требуется описать каждую из ветвей и указать их особенности:
- HKEY_CLASSES_ROOT (HKCR). Здесь хранятся данные о многочисленных расширениях, что позволяет системе работать с файлами различного типа. Если каких-либо сведений нет, всегда можно внести дополнительные изменения для расширения возможностей.
- HKEY_CURRENT_USER (HKCU). В указанной ветке находятся сведения об учетной записи. Сюда можно отнести различные настройки и элементы персонализации.
- HKEY_LOCAL_MACHINE (HKLM). Здесь располагается все данные о подсоединённых устройствах и драйверах. Что особенно важно, тут находятся сведения, касающиеся загрузки ОС.
- HKEY_USERS (HKU). Здесь представлены данные о полном списке пользователей для конкретного устройства.
- HKEY_CURRENT_CONFIG (HKCC). Представлены сведения об оборудовании, которое применяет устройство в ходе запуска ОС. Как показывает практика, тут находится мало информации и почти вся она является копией из иных разделов.
В процессе работы с реестром Windows, интерес представляют HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE. Здесь находится большинство настроек, которые возникает необходимость изменять.
Необходимо уделить внимание такой составляющей, как параметры. Они позволяют вносить изменения в различные аспекты работы системы. Существует несколько типов параметров:
- Двоичный. Получил наибольшее распространение и используется во всех разделах. При выдаче в редакторе реестра предусматривается применение 16х формата.
- Dword. Используется значение с длиной 4 байта. Необходим для осуществления хранения параметров драйверов и различных программ.
- Расширяемая строка данных. Основное отличие от строкового параметра заключается в отсутствии четкого фиксирования длины.
- Многострочный. Используется более чем одна строка. Довольно часто применяется при необходимости хранения табличных данных.
- Строковый. Строка текста, которая обладает фиксированной длиной.
- Qword. Сведения указываются в виде 64х разрядного целого.
- Ссылка. Используется символическая ссылка в формате Юникод.
Резервная копия всего реестра или отдельного раздела
Ранее уже говорилось об опасностях работы с реестром. Всегда имеется вероятность причинить вред системе и нужно заранее позаботиться о создании копии. Следует войти в редактор реестра Windows, где открыть раздел «Файл». В появившемся списке происходит выбор пункта «Экспорт». Теперь можно осуществить создание копии всего реестра или конкретного подраздела. Для удобства, процесс демонстрируется на скриншоте ниже.
С целью повышения надежности допускается сохранить копию не только на жёстком диске устройства, но внешнем носителе.
Восстановление реестра
Так, самое худшее случилось и в системе произошел сбой. Что необходимо сделать в такой ситуации? Стоит рассмотреть три способа восстановления, каждый из которых обладает своими особенностями. В любой ситуации требуется предварительно завершить работу всех программ и приложений. Не станет лишним отключение антивирусных средств.
Восстановление из файла
Переходим к документу, который ранее был сохранен. Там должна находиться копия всего реестра Windows. Требуется осуществить двойной клик, после чего подтвердить полученное сообщение. Оно представлено на скриншоте далее.
Определенное время потребуется для восстановления, а сам процесс будет завершен после перезагрузки устройства.
Слияние
Нужно открыть папку с копией и нажать на ней правой кнопкой мыши. Произойдет выдача меню, в котором требуется указать «Слияние». Для Вашего удобства, это действие представлено на скриншоте.
Как и в предыдущем случае, восстановление завершится после перезагрузки.
Импорт
Необходимо открыть реестр Windows. Как это сделать уже рассматривалось ранее и было представлено несколько подходов. В самом редакторе нас интересует меню «Файл». Там следует выбрать «Импорт». Будет предложено указать путь до сохраненной копии.
Отдельно требуется вынести вариант, который предусматривает восстановление всей системы. Это предусматривает использование встроенных средств. Важно самостоятельно делать бэкап или не отключать резервное копирование.
Восстановление с использованием live CD
В некоторых ситуациях загрузка операционной системы не будет представляться возможной. Это наиболее сложный вариант и для решения такой проблемы рекомендуется использовать специальный способ. Он заключается в осуществлении загрузки через live CD. Когда это выполнено, необходимо проследовать дальше – посетить корень диска, где установлена Windows. Предусматривается следующая инструкция:
- Создаем на диске с системой временную папку. Ей требуется дать название tmp. Именно здесь будут располагаться дефектные файлы реестра.
- Теперь осуществляем вход в папку C:\WINDOWS\system32\config
- Все файлы, найденные здесь, должны быть перенесены в созданную ранее временную папку C:\tmp\
- Идем в папку восстановления, которая располагается в директории C:\System Volume Information\. В ней должно располагаться некоторое количество папок следующего типа — _restore<длинный символьный код с дефисами>. Проверяем дату создания подобных папок и находим в списке самую позднюю.
- Внутри будут находиться папки с названиями RP1, RP2 и так далее. Нас опять интересует самая последняя. Важно ознакомиться с датой и уточнить, работали ли ОС в указанное время стабильно. Если нет, выбираем последнее работоспособное сохранение.
- Переходим в папку Snapshot\. Именно здесь располагаются резервные копии файлов реестра.
- Требуется использовать _REGISTRY_USER_DEFAULT, _REGISTRY_MACHINE_SECURITY, _REGISTRY_MACHINE_SOFTWARE, _REGISTRY_MACHINE_SYSTEM и _REGISTRY_MACHINE_SAM
- Указанные в прошлом пункте файлы копируются и ими производится замена аналогичных файлов реестра в директории C:\WINDOWS\system32\config. Требуется выполнить смену названия на DEFAULT, SECURITY, SOFTWARE, SYSTEM и SAM
- Для того, чтобы изменения вступили в силу, необходимо перезагрузиться.
Чистка реестра
Нередко можно столкнуться с запросом о том, как очистить реестр на Windows (Виндовс). Здесь можно использовать специализированное ПО или ручной метод. В первом случае, можно порекомендовать достаточно большое количество приложений. К наиболее популярным следует отнести Reg Organizer, CCleaner и Windows Cleaner. Данные программы отлично себя зарекомендовали – их возможности по оптимизации работы системы находятся на весьма высоком уровне.
Ручная чистка реестра Windows больше подходит для опытных пользователей, которые знают, что делают. Предварительно рекомендуется выполнить копирование файлов, чтобы провести восстановление в случае неудачи.
Непосредственно процесс очистки требует удалить любые сведения об уже удаленной программе. Подобные данные содержатся в «HKEY_CURRENT_USER» и именно туда лежит наш путь. В подразделе Software требуется найти необходимую папку. Ниже на скриншоте показан пример для программы Скайп.
Создание и удаление разделов и параметров через файл с расширением reg
Все reg файлы обладают строго установленным синтаксисом, который должен в обязательном порядке соблюдаться. Это является особенностью документов подобного типа. REG файлы допускается применять в качестве средства для создания или удаления подразделов, а также параметров.
Создание подразделов или изменение параметров
- Осуществляем доступ к редактору реестра
- Выбирается тот подраздел, изменения для которого должны быть проведены
- Происходит нажатие на вкладку «Файл», где надо нажать «Экспорт»
- В поле «Имя файла» прописывается название документа для сохранения REG-файла с изначальными элементами реестра и нажимается кнопку «Сохранить»
Удаление разделов реестра или параметров
Для выполнения поставленной задачи требуется поместить дефис перед путем реестра. Следует рассмотреть это на простом примере. Имеем:
Из него необходимо выполнить удаление раздела Program. Это будет выглядеть следующим образом:
Удаление значения имеет схожий способ. В данном случае, дефис должен располагаться непосредственно перед знаком равенства. Расширим прошлый пример – теперь нужно удалить параметр ProgramValue. Это выполняется следующим образом:
Вносить изменения можно через обычную программу-блокнот. Не забывайте предварительно делать копии.