Работа с реестром Windows через PowerShell

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

  • HKLM: HKEY_LOCAL_MACHINE → `HKLM:\`
  • HKCU: HKEY_CURRENT_USER → `HKCU:\`
  • HKCR: HKEY_CLASSES_ROOT → `HKCR:\`
  • HKU: HKEY_USERS → `HKU:\`
  • HKCC: HKEY_CURRENT_CONFIG → `HKCC:\`

Пример: получить название установленной версии Windows:

Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "ProductName"

Можно получить сразу все параметры:

Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"

Создание нового ключа

New-Item -Path "HKCU:\Software\ITVideoDemo" -Force

Создание строкового значения (REG\_SZ)

New-ItemProperty -Path "HKCU:\Software\ITVideoDemo" -Name "TestValue" -Value "HelloWorld" -PropertyType String -Force

Создание числового значения (DWORD)

New-ItemProperty -Path "HKCU:\Software\ITVideoDemo" -Name "Count" -Value 10 -PropertyType DWord -Force

Изменить существующее значение

Set-ItemProperty -Path "HKCU:\Software\ITVideoDemo" -Name "TestValue" -Value "UpdatedValue"

Удаление значения

Remove-ItemProperty -Path "HKCU:\Software\ITVideoDemo" -Name "TestValue"

Удаление ключа

Remove-Item -Path "HKCU:\Software\ITVideoDemo" -Recurse -Force

Проверка наличия ключа

Test-Path -Path "HKCU:\Software\ITVideoDemo"

Проверка значения вручную

$value = Get-ItemProperty -Path "HKCU:\Software\ITVideoDemo" -Name "TestValue" -ErrorAction SilentlyContinue
if ($value -ne $null) {
    "Значение найдено"
} else {
    "Значение не найдено"
}

PowerShell может использовать `reg.exe` для экспорта и импорта:

Экспорт ключа в .reg файл

reg export "HKCU\Software\ITVideoDemo" "C:\Backup\itvideo.reg" /y

Импорт из .reg файла

reg import "C:\Backup\itvideo.reg"
  • Запускайте PowerShell от имени администратора, если работаете с HKLM.
  • Используйте `-ErrorAction Stop` и `try/catch` для надежной обработки ошибок.
  • Делайте резервные копии перед изменениями:
reg export "HKCU\Software" "C:\Backup\HKCU_Backup.reg" /y