Экспорт ключей в файл .reg с помощью Powershell

Экспорт ключей в файл .reg с помощью Powershell

Мне нужно изменить несколько ключевых значений в реестре Windows 7, чтобы добавить параметр в команду, запускающую VLC.

К счастью, все ключи являются дочерними элементами ключей, начинающихся с VLC.:

введите описание изображения здесь

Команду для Openи PlayWithVLCнужно отредактировать. Я думаю о:

  • экспорт ключей в файл .reg,
  • внешнее редактирование значений для добавления --no-playlist-enqueueв строку
  • повторный импорт файла .reg в реестр.

Мои навыки работы с PowerShell ограничены, но я предполагаю, что код должен быть примерно таким:

Get-ChildItem "Registry::HKCR" -Recurse -Force 
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
    try {
        <create .reg entry>
    }
    catch { }
}

но я застрял на этом этапе. Не могли бы вы дать мне совет, как действовать дальше?

решение1

Хорошо, у вас ограниченные навыки PS, и вы хотите автоматизировать работу с реестром.

Уххххх… ты уверен? 8-}

Все это, как говорится.

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

Эти командлеты можно использовать для работы с реестром.

Get-Command -CommandType Cmdlet -Name '*item*'


CommandType     Name                  ModuleName
-----------     ----                  ----------
Cmdlet          Clear-Item            Microsoft.PowerShell.Management
Cmdlet          Clear-ItemProperty    Microsoft.PowerShell.Management
Cmdlet          Copy-Item             Microsoft.PowerShell.Management
Cmdlet          Copy-ItemProperty     Microsoft.PowerShell.Management
Cmdlet          Get-ChildItem         Microsoft.PowerShell.Management
Cmdlet          Get-Item              Microsoft.PowerShell.Management
Cmdlet          Get-ItemProperty      Microsoft.PowerShell.Management
Cmdlet          Move-Item             Microsoft.PowerShell.Management
Cmdlet          Move-ItemProperty     Microsoft.PowerShell.Management
Cmdlet          New-Item              Microsoft.PowerShell.Management
Cmdlet          Remove-Item           Microsoft.PowerShell.Management
Cmdlet          Remove-ItemProperty   Microsoft.PowerShell.Management
Cmdlet          Set-Item              Microsoft.PowerShell.Management
Cmdlet          Set-ItemProperty      Microsoft.PowerShell.Management

Перед использованием обязательно ознакомьтесь с файлами справки и их примерами.

https://docs.microsoft.com/en-us/powershell/scripting/getting-started/cookbooks/working-with-registry-entries?view=powershell-6

https://blogs.technet.microsoft.com/heyscriptingguy/2015/04/02/update-or-add-registry-key-value-with-powershell

PSRemoteRegistry 1.0.0.0

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

https://www.powershellgallery.com/packages/PSRemoteRegistry/1.0.0.0

https://stackoverflow.com/questions/28076128/powershell-export-multiple-keys-to-one-reg-file

Как мы знаем, возня с реестром может действительно навредить, если вы не будете осторожны. Поэтому сначала сделайте резервную копию, чтобы вы могли восстановиться в случае аварии или, по крайней мере, сделать точку восстановления системы, контрольную точку/снимок виртуальной машины.

Итак, вот небольшое изменение в опубликованном вами коде, но не воспринимайте это как окончательное, поскольку вам нужно принять решение о том, какие действия следует предпринять и как.

Get-ChildItem "Registry::HKCR" -Recurse -Force `
| where { $_.Name -match 'vlc.'}`
| ForEach-Object {
    try {
            'Target key to modify / export / whatever'
            $_.Name
            # 'Registry code here' -WhatIf # remove the whatif if you are sure you are good with what you have
    }
    catch { 
               Write-Warning -Message 'Key not accessible' 
               $_.Name
          }
}

Связанный контент