レジストリキーのデフォルト値をREG_EXPAND_SZで作成する
PowerShellでレジストリキーのデフォルト値をREG_EXPAND_SZで作成する方法を紹介します。
概要
通常レジストリエディタでキーを作成すると、"(既定)"の値の種類は"REG_SZ"で作成されます。
作成後に値の種類を変更できないため、通常の手順では"REG_EXPAND_SZ"で"(規定)"の値を作成できません。
作成手順
PowerShellスクリプトで"REG_EXPAND_SZ"で"(規定)"の値を書きこみます。
コード
下記のPowerShellスクリプトを準備します。
regsitry.ps1
$path = "HKLM:\SOFTWARE\Classes\.penguin"
$path2 = "HKLM:\SOFTWARE\Classes\.penguin\test002"
$value = "%SystemRoot%\system32\notepad.exe,-470"
New-Item $path
New-Item $path2
New-ItemProperty -Path $path2 -name "(default)" -Value $value -propertyType ExpandString
解説
New-Item $path
にて "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.penguin" キーを作成します。
New-Item $path2
にて "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.penguin\test002" キーを作成します。
New-ItemProperty -Path $path2 -name "(default)" -Value $value -propertyType ExpandString
にて "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.penguin" キーのデフォルト値を""@%SystemRoot%\system32\notepad.exe,-470"に設定し、タイプを"REG_EXPAND_SZ"に設定します。
注意
パスの表記は
"HKLM:\SOFTWARE\Classes\.penguin"
を用います。
"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.penguin"
の表記では正しく動作しません。
補足
キーのデフォルト値を設定する場合は -Name の値は空文字("")ではなく、"(default)"を用います。
実行結果
コマンドプロンプトを管理者として起動します。通常は現在のユーザーで起動して問題ないのですが、今回は"HKEY_LOCAL_MACHINE"のレジストリを編集するため管理者として起動する必要があります。起動後"PowerShell"コマンドを実行し、PowerShellのプロンプトを表示します。(下図参照)
作成したスクリプトファイルを実行します。
正しく動作すると下図の実行結果となります。
レジストリエディタを開き、キーが作成されていることを確認します。デフォルトの値が"REG_EXPAND_SZ"になっていることも確認できました。
著者
iPentecの企画・分析担当。口が悪いのでなるべく寡黙でありたいと思っている。が、ついついしゃべってしまい、毎回墓穴を掘っている。