Лабораторная работа №3. Работа с реестром.
Реестр Windows состоит из пяти так называемых корневых разделов (root keys):
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_ MACHINE,
HKEY_USERS и HKEY_CURRENT_CONFIG.
Каждый раздел может содержать элементы данных называемые параметрами (value entries) и вложенные разделы (subkeys).
Реестр – это набор файлов хранящихся на жѐстком диске. Файлы находятся в папке %SystemRoot%\System32\Config, где %SystemRoot% — папка, куда установлена Windows.
Файл Ntuser.dat создается для каждого пользователя и хранит его настройки находится в %SystemDrive%\Documents and Settings\%Username% (Windows XP) или %SystemDrive%\Users\%Username% (для систем начиная с Vista), где %Username% —
имя пользователя.
SAM |
HKEY_LOCAL_MACHINE\SAM |
SECURITY |
HKEY_LOCAL_MACHINE\SECURITY |
SOFTWARE |
HKEY_LOCAL_MACHINE\SOFTWARE |
SYSTEM |
HKEY_LOCAL_MACHINE\SYSTEM |
SYSTEM |
HKEY_CURRENT_CONFIG |
DEFAULT |
HKEY_USERS\.DEFAULT |
Ntuser.dat |
HKEY_CURRENT_USER |
В этих файлах хранятся:
HKEY_LOCAL_MACHINE - Содержит глобальную информацию о компьютерной системе, включая такие данные об аппаратных средствах и операционной системе, в том числе: тип шины, системная память, драйверы устройств и управляющие данные, используемые при запуске системы. Информация, содержащаяся в этом разделе, действует применительно ко всем пользователям, регистрирующимся в системе.
HKEY_CLASSES_ROOT - Содержит ассоциации между приложениями и
типами файлов (по расширениям имени файла).
HKEY_CURRENT_CONFIG - Содержит конфигурационные данные для текущего аппаратного профиля. Аппаратные профили представляют собой наборы изменений, внесѐнных в стандартную конфигурацию сервисов и устройств, установленную данными разделов Software и System корневого раздела HKEY_LOCAL_MACHINE. В разделе HKEY_CURRENT_CONFIG отражаются только изменения. Кроме того, параметры этого раздела появляются также в разделе HKEY_LOCAL_MACHINESystem CurentControlSetHardwareProfitesCuiTent.
HKEY_CURRENT_USER - Содержит, профиль пользователя, на данный момент. зарегистрировавшегося в системе, включая переменные окружения, настройку рабочего стола, параметры настройки сети, принтеров и приложений. Этот раздел представляет собой ссылку на раздел HKEY USERS username, где username — имя пользователя, зарегистрировавшегося в системе на текущий момент.
HKEY_USERS - Содержит все активно загруженные пользовательские профили,
включая HKEY_CURRENT_USER, а также профиль по умолчанию. Раздел HKEY_USERS содержит вложенный раздел Default, а также другие разделы, определяемые идентификатором безопасности (Security ID) каждого пользователя.
Локальный реестр.
Доступ к локальному реестру осуществляется с помощью провайдера Registry, который в свою очередь, предоставляет стандартные диски HKCU и HKLM.
Провайдер Registry предоставляет доступ ко всему реестру, но по умолчанию даѐт доступ только двум дискам.
Для того что бы убедится в этом вводим:
Список дисков
Get-PSDrive
Только от провайдера Registry
Get-PSDrive -PSProvider Registry
Раз реестр это «диск» то можно по аналогии доступа к дискам и веткам реестра применять команды Set-Location и Get-Location. Используем Set-Location
Set-Location HKLM:\SOFTWARE
Можно и еѐ синоним команду cd
cd HKLM:\SOFTWARE
Смотрим где местонахождение
Get-Location
Переходим на уровень выше
cd ..
Создание дополнительных дисков.
При необходимости можно создать дополнительный PSDrive. Для примера можно взять HKEY_CLASSES_ROOT который не является независимым объектом, а всего лишь ссылкой на HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Создание нового диска HKCR производится следующим образом.
New-PSDrive -name HKCR -PSProvider registry -root
HKLM:\SOFTWARE\ClassesDir HKCR:
Удаление созданного диска производится командой Remove-PSDrive Remove-PSDrive HKCR
Поиск в реестре.
Поиск в реестре производится теме же методиками что и в файловой системе. Для примера можно поискать на диске HKLM: все элементы, в которых присутствует ключевое слово *PowerShell*
Get-ChildItem HKLM: -recurse -include *PowerShell*
Для демонстрации можно вывести список всех сервисов (их настройки храняться в ветке HKLM:\SYSTEM\CurrentControlSet\Services) с помощью двух команд cd HKLM:\SYSTEM\CurrentControlSet\Services dir
Или при при помощи всего одной команды выводим список установленного ПО.
Get-ItemProperty
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Format-Table InstallDate, DisplayName, Publisher
Для x64 систем необходимо учитывать вторую ветку т.к. в ней хранятся данные по 32-битным программам.
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Curren tVersion\Uninstall
Удалѐнный реестр.
Для работы с удалѐнным реестром придѐтся обратиться к .NET.
Вводим команды.
$ServerName = "."
$ServerKey =
[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive
]::LocalMachine, $ServerName)
Получаем объект, свойства которого можно посмотреть, использовав стандартный командлет Get-Member
$ServerKey | Get-Member
На экран выводится список свойств которые нам могут понадобится.
CreateSubKey — создать ключ
DeleteSubKey — удалить ключ
DeleteSubKeyTree — удалить дерево ключей
DeleteValue — удалить значение
…
Среди методов есть OpenSubkey и GetSubKeyNames, с помощью которых можно прочитать значения из реестра удалѐнной системы.
Задаѐм имя удалѐнного хоста
$ComputerName = ‘HOST_NAME’
$reg =
[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive
]::LocalMachine,$ComputerName)
$key =
$reg.OpenSubkey("Software\Microsoft\Windows\CurrentVersion\Uninstall",$false)
$key.GetSubKeyNames()
Получаем значения определѐнных элементов. Например, DisplayName и DisplayVersion
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’,
‘HOST_NAME’)
$key =
$reg.OpenSubKey(‘SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall’)
$key.GetSubKeyNames() | ForEach-Object {
$subkey = $key.OpenSubKey($_) $i = @{}
$i.Name = $subkey.GetValue(‘DisplayName’)
$i.Version = $subkey.GetValue(‘DisplayVersion’)
$i.Date = $subkey.GetValue(‘InstallDate’)
$i.Pubisher = $subkey.GetValue(‘Publisher’)
New-Object PSObject -Property $i
$subkey.Close()
}
$key.Close()
$reg.Close()
Правка реестра.
Все используемые методики и способы одинаково применимы как к файловой системе так и к реестру.
Создаем новый элемент
New-Item -Path HKCU:\Environment\NewKey
Или так
New-Item —type Directory HKCU:\Environment\NewKey—1
Аналогично будет работать команда md md HKCU:\Environment\NewKey—2
Переходим в папку
Set-Location HKCU:\Environment
Создаем копию созданного ранее ключа
Copy-Item -Path HKCU:\Environment\NewKey .\NewKey2
Переименовываем
Rename-Item -Path HKCU:\Environment\NewKey2 -NewName RenameKey2
Удаляем старый
Remove-Item -Path HKCU:\Environment\NewKey
Аналогично можно использовать команду del del HKCU:\Environment\NewKey
Создаем новое значение
New-ItemProperty -PropertyType String -Path HKCU:\Environment -name NewKey Value "NewParam"
Допустимые для создания элементы:
ItemType |
Description |
DataType |
String |
A string |
REG_SZ |
ExpandString |
A string |
REG_EXPAND_SZ |
Binary |
Binary values |
REG_BINARY |
DWord |
Numeric values |
REG_DWORD |
MultiString |
Text of several lines |
REG_MULTI_SZ |
Qword |
64-bit numeric values |
REG_QWORD |
Меняем значение у существующего элемента
Set-ItemProperty -Path .\ -name "NewParam" -Value "UpdatedParam"
Переименовываем параметр
Rename-ItemProperty -Path .\ -name "NewParam" -NewName "TestParam"
Удаляем параметр
Remove-ItemProperty -Path .\ -name newkey
© ООО «Знанио»
С вами с 2009 года.