Мне нужно изменить несколько значений ключа в реестре 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 ответ1

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
          }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .