Windows RegistryをPowerShellで使う
Windows registryは、Windowsシステムの一部であり、設定や構成データを保持しています。ここでは、PowerShellスクリプトを使用してRegistryを操作する方法について学びます。
レジストリの階層構造
Registryをスクリプトする前には、レジストリの階層構造を理解することが重要です。Registryは、木のように組織化されており、以下のトップレベルのキーがあります。
HKEY_CLASSES_ROOT(HKCR): ファイルアソシエーションやCOMクラスの設定を保持しています。HKEY_CURRENT_USER(HKCU): 現在ユーザーの設定を保持しています。HKEY_LOCAL_MACHINE(HKLM): システムワイドの設定と構成データを保持しています。HKEY_USERS: ユーザー固有のRegistryキーを含むコンテナです。
基本的なRegistry操作
PowerShellは、Registryを操作するためのいくつかのcmdletを提供しています。以下は基本的な操作です。
1. 新しいRegistryキーを作成する
New-Item -Path 'HKCU:\Software\TestApp' -ItemType Key
このコマンドでは、新しいキーTestAppをHKEY_CURRENT_USER\Softwareの下に作成します。
2. レジストリ値を設定する
Set-ItemProperty -Path 'HKCU:\Software\TestApp' -Name 'Value1' -Type String -Value 'Hello, World!'
このコマンドでは、新しい値Value1を文字列'Hello, World!'で設定し、キーHKEY_CURRENT_USER\Software\TestAppの下に作成します。
3. レジストリ値を読み取る
Get-ItemProperty -Path 'HKCU:\Software\TestApp' -Name 'Value1'
このコマンドでは、値Value1をキーHKEY_CURRENT_USER\Software\TestAppから読み取ります。出力はPSRegistryPropertyオブジェクトになります。
4. レジストリキーの削除
Remove-Item -Path 'HKCU:\Software\TestApp' -Force
このコマンドでは、キーTestAppをHKEY_CURRENT_USER\Softwareの下から削除します。 -Forceパラメーターは、確認ダイアログが出るようにすることができます。
高度なRegistry操作
以下は、高度なRegistry操作です。
1. レジストリキーと値の列挙
Get-ChildItem -Path 'HKCU:\Software' | ForEach-Object { Write-Host $_.Name }
このコマンドでは、HKEY_CURRENT_USER\Softwareの下の子キーを列挙し、名前をコンソールに出力します。
2. レジストリ値の検索
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion' -Search 'keyname:*'
このコマンドでは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionの下の子キーを検索し、名前が含む文字列keyname:を含むキーの名前を出力します。
3. レジストリデータのエクスポートとインポート
Export-Registry -Path 'HKCU:\Software\TestApp' -DestinationFile 'C:\path\to\exported.reg'
このコマンドでは、キーTestAppをHKEY_CURRENT_USER\Softwareの下からエクスポートし、ファイルexported.regに保存します。
Import-Registry -Path 'C:\path\to\imported.reg' -Force
このコマンドでは、レジストリデータをファイルimported.regからインポートします。 -Forceパラメーターは、確認ダイアログが出るようにすることができます。
最良のプラクティス
PowerShellでRegistryを操作する際には、以下の最良のプラクティスに注意してください。
- レジストリ値を変更するときの注意: レジストリ変更は、システムの動作や安定性に影響を持つ可能性があります。
- 明示的な変数名:Confusionを避けるために、明示的な変数名を使用してください。
- スクリプトを完全に検証:プロダクション環境で実行する前には、スクリプトの出力を完全に検証してください。
結論
このチュートリアルでは、PowerShellでWindows Registryを操作する方法について学びました。基本的な操作と最良のプラクティスをマスターすると、Registryを使用したいくつかの用途に対応できます。また、レジストリ値を変更する際には注意してくださいし、スクリプトを完全に検証してください。
追加リソース
- Microsoft Docs: Registry
- PowerShell documentation: Get-ChildItem, New-Item, Set-ItemProperty, Remove-Item