
- •Обзор реестра
- •Данные hkey_classes_root
- •Профили пользователей
- •Данные hkey_current_user
- •Volatile Environment. Этот раздел содержит настройки для сеанса текущего пользователя.
- •Дистанционный доступ к реестрам
- •Поиск в реестре
- •Создание списка Favorites
- •Добавление элементов в реестр
- •Архитектура .Reg-файла
- •Слияние файла регистрации с реестром
- •Пример файла регистрации
- •Описание полномочий
- •Задание специальных полномочий
- •Изменение владельца раздела
- •Аудит реестра
- •Включение аудита
- •Задание опций аудита в реестре
Аудит реестра
Вам может потребоваться аудит определенных действий с реестром, чтобы попытаться найти источник какой-либо проблемы. Или вам может потребоваться аудит просто из любопытства (если у вас достаточный объем свободного места на диске для журнала аудита).
У вас имеются достаточно мощные и гибкие возможности аудита операций с реестром; вы можете выполнять аудит разделов, пользователей, групп и любых сочетаний. Для аудита операций с реестром нужно выполнить три шага.
Включить аудит как групповую политику.
Задать опции конфигурирования аудита в реестре.
Просматривать результаты аудита в журнале Security оснастки Event Viewer.
Включение аудита
Прежде чем выполнять аудит операций с реестром, вы должны включить аудит, который отключен по умолчанию в Windows Server 2003. Включение/отключение аудита осуществляется с помощью групповой политики, и вы можете использовать для этого политику на уровне домена или локальную политику в зависимости от действий в реестре, аудит которых хотите выполнять.
Включение аудита для домена. Чтобы включить аудит реестра на уровне домена, откройте оснастку Active Directory Users and Computers и затем выполните следующие шаги.
Откройте диалоговое окно Properties для данного домена.
Щелкните на вкладке Group Policy.
Выберите объект Default Domain Policy и щелкните на кнопке Edit.
Появится консоль Group Policy. Перейдите в Computer Configuration\Windows Settings\Security Settings\Local Policies\Audit Policy.
Дважды щелкните на записи Audit object access в правой панели, чтобы открыть диалоговое окно Properties.
Включите эту политику, установив флажок Define This Policy Settings (Определить следующие настройки политики) и установив флажок Success и/или флажок Failure (аудит успешных и/или неудачных попыток).
Примечание. Политики аудита реестра позволяют также выбирать аудит успешных или неудачных попыток для каждого типа доступа к реестру. Это позволяет осуществлять избирательную фильтрацию, не допуская излишнего разрастания файла журнала.
Включение аудита на локальном компьютере. Чтобы включить аудит реестра на каком-либо компьютере, выполните следующие шаги.
Откройте средство администрирования Local Security Settings.
В дереве консоли раскройте Local Policies и выберите Audit Policy.
Дважды щелкните на записи Audit object access в правой панели и выберите действия, аудит которых хотите осуществлять.
Задание опций аудита в реестре
После включения аудита вы можете задать действия, аудит которых хотите осуществлять. Откройте Regedit, щелкните правой кнопкой на родительском разделе, который хотите использовать как верхнюю точку процесса аудита (по умолчанию аудит наследуется подразделами) и выберите в контекстном меню пункт Permissions. Щелкните на кнопке Advanced и перейдите во вкладку Audit. Щелкните на кнопке Add, чтобы начать добавление пользователей и групп, аудит которых хотите осуществлять. Используйте следующие рекомендации.
Для аудита действий определенного лица выберите этого пользователя.
Для аудита, позволяющего увидеть, кто и что делает в реестре, лучше всего выбрать группу Everyone.
В более сложных случаях выберите подходящие группы и пользователей.
При выборе каждого пользователя или группы выберите также действия, аудит которых хотите осуществлять, как это показано на рисунке 4.5.
По умолчанию аудит выполняется для текущего раздела и наследуется подразделами. Вы можете изменить это поведение, выбрав другой вариант в раскрывающемся списке Apply Onto. Имеются три варианта: This key only, This key and subkeys и Subkeys only.
Вот некоторые советы по конфигурированию аудита.
Включение аудита вызывает снижение производительности. Чем больше групп и пользователей вы добавляете, тем больше задач вы включаете в аудит и тем больше влияете на уровень производительности.
Почти нет смысла выполнять аудит неудачных попыток отдельных пользователей, поскольку в большинстве случаев это происходит из-за недостаточных полномочий пользователя. Если этот пользователь не может выполнить какую-либо задачу, то нет смысла сообщать об этом в виде события аудита. Если приложения сообщают об ошибках и служба поддержки предполагает наличие проблемы доступа к данным реестра, задайте аудит неудачных попыток для раздела SYSTEM.
Не выполняйте аудит успешных попыток для обычных задач, которые не могут принести вреда, например, запрос значения. Этот может привести только к огромным размерам журнала.
Рис. 4.5. Выберите действие и результат для каждой задачи реестра, аудит которой хотите осуществлять
Просмотр журнала аудита
Аудит – это события системы безопасности, поэтому результаты аудита находятся в журнале Security оснастки Event Viewer. Откройте Event Viewer и выберите журнал Security для просмотра событий аудита.
Reg.exe
Reg.exe – это надежное и многофункциональное средство командной строки, которое вы можете использовать для управления записями реестра. Как и для команды net, для reg.exe требуется вторая команда, например, reg add. Эта программа позволяет работать как с локальными, так и с удаленными реестрами. Но если вы применяете это средство к удаленному реестру, то можете работать только с HKEY_LOCAL_MACHINE и HKEY_CURRENT_USER.
Общие указания по работе с Reg.exe
Существует несколько общих правил и рекомендаций по работе с командами reg, и они приводятся здесь, чтобы не повторять их для каждой команды.
При вводе имени раздела или подраздела вы должны ввести полный путь к этому разделу, начиная с поддерева. Однако вы можете использовать следующие сокращения для имен поддеревьев.
Сокращение |
Поддерево |
HKCR |
HKEY_CLASSES_ROOT |
HKLM |
HKEY_LOCAL_MACHINE |
HKCU |
HKEY_CURRENT_USER |
HKCC |
HKEY_CURRENT_CONFIGURATION |
Кроме того, вам будут полезны следующие сведения.
Указываемый путь не зависит от используемого регистра букв.
Имя нового раздела зависит от регистра букв.
Имена разделов, содержащие пробелы, должны быть заключены в кавычки.
Регистр букв не имеет значения для существующих элементов данных.
Имя нового элемента данных и его значение зависят от регистра букв.
Зависимость от регистра букв означает, что соответствующие элементы записываются в реестр в том виде, как вы их вводите, то есть с прописными и строчными буквами. Для функций реестра это обычно не имеет значения, поскольку, за несколькими исключениями, поиск разделов, элементов данных или значений в реестре не завит от регистра букв. Но вы можете, например, ввести NewFeatureName вместо newfeaturename, поскольку использование прописных букв упрощает чтение записи.
Reg Add
Команда reg add используется для добавления в реестр раздела и/или элемента данных. Она имеет следующий синтаксис:
reg add [\\Машина\]Имя_раздела[/v Имя_значения\/ve][/t Тип]
[/s Разделитель][/d Данные][/f]
где
\\Машина – это имя удаленного компьютера. Пропустите этот параметр, если вы работаете на локальной машине. Имя_раздела – это имя раздела, где будет помещена новая запись, или имя нового раздела, который вы добавляете в реестр. Если вы добавляете раздел, то можете не указывать все остальные параметры (см. ниже). Например, если у вас имеется раздел с именем HKEY_CURRENT_USER\Software\CompanyDatabase и вы хотите добавить подраздел с именем ColorScheme, введите следующую команду.
reg add HKCU\Software\ CompanyDatabase\ColorScheme
Система возвратит сообщение "The operation completed successfully" (Операция успешно завершена).
Примечание. Если вы используете пробел в имени, не используя для этого имени кавычек, то система предполагает, что любой текст после первого слова является параметром, и выводит сообщение об ошибке: "Too many command-line parameters" (Слишком много параметров командной строки).
Если вы вводите новый элемент данных, то используются следующие параметры. Для одновременного ввода нового раздела и нового элемента данных просто введите имя нового раздела в конце пути.
/v Имя_значения – это имя нового элемента данных. Если это имя содержит пробелы, заключите его в кавычки.
/ve указывает пустое значение.
/t Тип указывает тип данных для нового элемента данных. Если пропустить этот параметр, то по умолчанию задается тип данных REG_SZ.
/s Разделитель указывает символ, который вы хотите использовать как разделитель в случае нескольких строк данных (для типов данных REG_MULTI_SZ ).
/d Данные – это данные, которые вы хотите присвоить добавляемому элементу данных.
/f вызывает перезапись значения существующей записи.
Reg Delete
Команда reg delete используется для удаления подразделов и/или элементов данных из реестра. Она имеет следующий синтаксис.
reg delete [\\Машина\]Имя_раздела[/v Имя_значения][/va][/f]
где
\\Машина – это имя удаленного компьютера. Пропустите этот параметр, если вы работаете в локальном реестре.
Имя_раздела – это подраздел для данной записи (или подраздел, который вы хотите удалить). Указывайте полный путь.
/v Имя_значения – удаление элемента данных с этим именем. Если это имя содержит пробелы, заключите его в кавычки.
/va – удаление всех элементов данных в указанном подразделе.
/ve – удаление пустого элемента данных.
/f вызывает операцию удаления без подтверждения пользователем.
Reg Copy
Команда reg copy используется для копирования записи реестра в новое место в локальном или удаленном реестре. Она имеет следующий синтаксис.
reg copy [\\Машина\]Исходный_раздел[\\Машина\]Целевой_раздел[/s][/f]
где
\\Машина\]Исходный_раздел – это имя компьютера и путь в реестре для исходного компьютера. Пропустите параметр "Машина", если это локальный компьютер.
\\Машина\]Целевой_раздел – это имя компьютера и путь в реестре для целевого компьютера. Пропустите параметр "Машина", если это локальный компьютер.
/s – копирование всех подразделов, находящихся в последнем разделе указанного пути, вместе с элементами данных, содержащимися в этих подразделах.
/f вызывает копирование без запроса подтверждения пользователем.
Reg Compare
Команда reg compare используется для сравнения одной записи реестра с другой записью реестра на локальном или удаленном компьютере. Она имеет следующий синтаксис.
reg compare [\\Машина\]Имя_раздела_1[\\Машина\]Имя_раздела_2
[/v Имя_значения][/s][/f] [Output]
где
Машина – это имя компьютера. Пропустите этот параметр для локального компьютера.
Имя_раздела_1, Имя_раздела_2 – указывают полный путь в реестре к первому и второму подразделам.
/v Имя_значения – сравнение значений элемента данных, указанного параметром Имя_значения (имена элементов данных, содержащих пробелы, заключайте в кавычки).
Параметр Output принимает одно из следующих значений.
/oa – вывод всех отличий и совпадений.
/od – вывод только отличий.
/os – вывод только совпадений.
/on – не выводится никаких результатов.
Система отвечает одним из следующих возвращаемых кодов.
0 Сравнение прошло успешно, и нет никаких отличий.
1 Сравнение провести не удалось.
2 Сравнение прошло успешно, и есть отличия.
Reg Export
Команда reg export используется для экспорта записи реестра в файл. Эта команда дает такой же результат, как и команда File\Export Registry File при работе в Regedit. Эта команда работает только с локальным реестром. Она имеет следующий синтаксис.
reg export Имя_раздела Имя_файла [/y]
где
Имя_раздела – полный путь в реестре к разделу, который вы хотите экспортировать.
Имя_файла – имя .reg-файла, в который вы хотите экспортировать раздел.
/y – перезапись существующего файла с именем Имя_файла без запроса подтверждения.
Reg Import
Команда reg import используется для импорта записи реестра из .reg-файла. Она имеет следующий синтаксис.
reg import Имя_файла
где
Имя_файла – имя .reg-файла, который вы хотите импортировать.
Эта команда дает такой же результат, как и команда File\Import Registry File при работе в Regedit или двойной щелчок на .reg-файле.
Reg Save
Команда reg save используется для сохранения раздела в файле улья. Она имеет следующий синтаксис.
reg save \\Машина Имя_раздела Имя_файла [/y]
где
\\Машина – это имя удаленного компьютера (пропустите этот параметр для локального компьютера).
Имя_раздела – полный путь в реестре к разделу.
Имя_файла – целевой файл (с расширением .hiv).
/y – перезапись существующего файла с именем Имя_файла без запроса подтверждения перезаписи.
Reg Restore
Команда reg restore используется для восстановления какого-либо раздела из HIV-файла, созданного командой reg save. Она имеет следующий синтаксис.
reg restore [\\Машина] Имя_раздела Имя_файла
где
\\Машина – это имя удаленного компьютера (пропустите этот параметр для локального компьютера).
Имя_раздела – полный путь в реестре к целевому разделу.
Имя_файла – имя сохраненного ранее файла, из которого вы хотите теперь выполнить восстановление
Reg Load
Команда reg load используется для загрузки файла улья (созданного с помощью команды reg save) в другую часть реестра. Это полезно при поиске проблемных записей реестра. Она имеет следующий синтаксис.
где
\\Машина – это имя удаленного компьютера (пропустите этот параметр для локального компьютера).
Имя_раздела – полный путь к месту в реестре, которое вы хотите использовать для размещения данного улья.
Имя_файла – имя файла улья.
Примечание. Этот раздел не является постоянным, и он исчезает, когда вы перезагружаете компьютер.
Reg Unload
Команда reg unload используется для удаления улья, который вы загрузили с помощью команды reg load. Она имеет следующий синтаксис.
reg unload \\Машина Имя_раздела
где
\\Машина – это имя удаленного компьютера (пропустите этот параметр для локального компьютера).
Имя_раздела – полный путь к месту в реестре, где содержится загруженный вами файл.
Reg Query
Команда reg query используется для получения информации о записи или нескольких записях в разделе или подразделе. Она имеет следующий синтаксис.
reg query \\Машина Имя_раздела [{/v Имя_значения\/ve}][/s]
[/se Разделитель][/f Данные] [{/k\/d}][/c][/e][/t Тип][/z]
где
Машина – это имя удаленного компьютера (пропустите этот параметр для локального компьютера).
Имя_раздела – полный путь к разделу, который вы запрашиваете.
/v Имя_значения – имя запрашиваемого элемента данных реестра. Если этот параметр опущен, выдаются все элементы данных из раздела Имя_раздела. Имя_значения не является обязательным параметром, если используется параметр /f.
/ve – запрашиваются пустые элементы данных.
/s – запрашиваются все подразделы и элементы данных.
/se Разделитель указывает разделитель значений, который вы хотите искать в элементах данных типа REG_MULTI_SZ. Если Разделитель не указан, то система использует \0.
RegMon
Один мой знакомый по журналу, для которого я пишу статьи (Windows & .Net Magazine), является очень хорошим специалистом по операционным системам. Я уже давно (начиная с Windows NT) использую написанную им утилиту под названием RegMon, которая позволяет мне следить за доступом приложений к реестру в реальном масштабе времени.
Вы можете задавать фильтры, чтобы ограничивать типы информации, о которой сообщает эта программа, выделять нужную запись и переходить непосредственно к подразделу реестра, на которую ссылается эта запись. Это отличный способ отслеживания элементов реестра, которые добавляются во время установки ПО. Запустите regmon.exe, прежде чем программа установки начнет копировать файлы и выполнять запись в разделы реестра, и вы узнаете все, что происходит в реестре. Сохраните результаты, и затем проверьте эти записи после того, как удалите (деинсталлируете) соответствующее ПО. Поскольку большинство процедур деинсталляции не могут целиком удалить информацию реестра, которая была записана во время установки, то вы можете очистить свой реестр вручную.
RegMon распространяется бесплатно, и вы можете загрузить ее из http://www.sysinternals.com. В дополнение к этой утилите вы найдете много полезных утилит на данном веб-сайте.