1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

PowerShellを使用してレジストリを変更する

2022-01-05 09:08:11

次の例では、PowerShellはレジストリキーを修正して、セキュリティループの無効化、およびループバックチェックの無効化を完了します。

コピーコード コードは以下の通りです。

#Security loop disable so that you can look at it on the same machine
if(($gchn = Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -Name "BackConnectionHostNames" - ea SilentlyContinue) -eq $null){
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -PropertyType MultiString -Value "$url" -Name " quot;BackConnectionHostNames"
}else{
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0\" -Name "BackConnectionHostNames" -Value ($gchn .BackConnectionHostNames+" $url")
}
#disable loobback check
if((Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" -Name "DisableLoopbackCheck" -ea SilentlyContinue) -eq $null){
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\" -PropertyType DWORD -Value "1" -Name " DisableLoopbackCheck"
}

みんなの例、powershellでレジストリを操作する方法を紹介します。

レジストリキーにアクセスする

PowerShell では、ユーザーは HKCU: (HKEY_CURRENT_USER として) および HKLM: (HKEY_LOCAL_MATCHINE として) と同様の仮想ドライブを通じてレジストリキーにアクセスできます。
例えば Dir Registry::HKEY_LOCAL_MACHINESoftware
このように、ユーザーはレジストリ内のキーを簡単にコピー&ペーストすることができ、ユーザーは以下のコマンドで登録されたファイルの接尾辞を取得することができます。
dir Registry::HKEY_CLASSES_ROOT. * 名前|オブジェクトの並べ替え

レジストリキーの読み込み

PowerShellでは、レジストリの内容を仮想ドライブとして操作することができます。
以下のGet-RegidtryValues関数は、レジストリキーの下に格納されているすべてのキーを列挙するもので、そのコード全体を以下に示します。

 
function Get-RegistryValues($key) { 
         (Get-Item $key).GetValueNames() 
}


Get-RegistryValues HKLM:\SoftwareMicrosoft⇄WindowsCurrentversion

Get-RegistryValueは、任意のレジストリキーを読み取り、その内容を返します。

function Get-RegistryValue($key, $value) { 
         (Get-ItemProperty $key $value). $value 
} 
Get-RegistryValue ' HKLM:\Software\Microsoft\Windows\Currentversion' ` 


SM_ゲーム名

レジストリキーへの書き込み

レジストリキーの追加や変更もPowerShellで簡単にできます。レジストリキーを操作するために、以下のSet-RegistryValueという関数が作成されましたので、完全なコードを以下に示します。

function Set-RegistryValue($key, $name, $value, $type="String") { 
 if ((Test-Path $key) -eq $false) { md $key | Out-Null } 
    Set-ItemProperty $key $name $value -type $type 
 } 
  Set-RegistryValue HKCU:\Software\TestABC myValue Hello 
  Set-RegistryValue HKCU:\Software\TestABC myValue 12 Dword 
  Set-RegistryValue HKCU:\Software\TestABC myValue ` 
([Byte[]][Char[]]"Hello") Binary


レジストリキーを削除する

Remove-Itemを介してターゲットレジストリキーを削除するRemove-RegistryKey関数の全コードは以下のとおりです。

function Remove-RegistryKey($key) { 
Remove-Item $key -Force 
}


レジストリ値は、Remove-ItemProperty 関数によって削除され、その完全なコードは以下のとおりです。

function Remove-RegistryValue($key, $value) { 
Remove-ItemProperty $key $value 
}