レジストリエントリの操作

  • 06/05/2017
  • 読むのに5分
    • j
    • s
    • s
    • s
    • K
    • m
    • b

レジストリエントリはキーのプロパティであり、直接参照することはできない

レジストリエントリの一覧表示

レジストリエントリを調べるには、さまざまな方法があります。 最も簡単な方法は、キーに関連付けられたpropertynamesを取得することです。 たとえば、レジストリキーHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionGet-Itemを使用します。 レジストリキーキー内のレジストリエントリのリストである”Property”の一般名を持つプロパティを持っています。次のコマンドは、Propertyプロパティを選択し、リストに表示されるように項目を展開します:

DevicePathMediaPathUnexpandedProgramFilesDirCommonFilesDirProductId

レジストリエントリをより読みやすい形式で表示するには、Get-ItemProperty:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

キーのWindows PowerShell関連のプロパティには、asPSPath、PSParentPath、PSChildName、psprovider。現在の場所を参照するには、*.*表記を使用できます。 最初にCurrentVersionレジストリコンテナに変更するには、Set-Locationを使用できます:または、組み込みのHKLM PSDriveをSet-Location:

Set-Location -Path hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion

次に、*.*表記を使用して、現在の場所のプロパティを一覧表示できますフルパスを指定せずに:

Get-ItemProperty -Path .
...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...

パス展開は、ファイルシステム内と同じように機能するため、この場所からHKLM:\SOFTWARE\Microsoft\Windows\HelpGet-ItemProperty -Path ..\HelpGet-ItemProperty -Path ..\HelpGet-ItemProperty -Path ..\HelpGet-ItemProperty -Path ..\HelpGet-ItemProperty -Path ..\Help

...DevicePath : C:\WINDOWS\infMediaPathUnexpanded : C:\WINDOWS\MediaProgramFilesDir : C:\Program Files...

パス展開は、ファイルシステム内と同じように動作します。>.

単一のレジストリエントリの取得

レジストリキー内の特定のエントリを取得する場合は、いくつかの可能なアプリケーションのいずれかを この例では、DevicePathの値をHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionで検索します。

Get-ItemPropertyを使用して、Pathパラメーターを使用してキーの名前を指定し、名前パラメーターを使用してDevicePathエントリの名前を指定します。

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath

このコマンドは、標準のWindows PowerShellプロパティとDevicePathpropertyを返します。

注意

Get-ItemPropertyにはFilter、Include、およびExcludeパラメータがありますが、プロパティ名でフィルタリングするために使用することはできません。 これらのパラメータは、項目のプロパティであるレジストリエントリではなく、itempathsであるレジストリキーを参照します。別のオプションは、Regを使用することです。exeコマンドラインツール。 Regの助けのために。exeを実行し、コマンドプロンプトでreg.exe /?と入力します。 DevicePathエントリを検索するには、regを使用します。次のコマンドに示すようにexeを実行します:

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath

WshShell COMオブジェクトを使用してレジストリエントリを検索することもできますが、thismethodは大きなバイナリデータや”\”などの文字を含むレジストリエントリ名では動作しません)。 プロパティ名を\区切り記号で項目パスに追加します。

(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

単一のレジストリエントリの設定

レジストリキーの特定のエントリを変更する場合は、いくつかの可能なapproachesのいずれかを使用できます。 この例では、HKEY_CURRENT_USER\Environmentの下のパスエントリを変更します。 Pathエントリは、実行可能ファイルの検索場所を指定します。

  1. Get-ItemPropertyを使用してパスエントリの現在の値を取得します。
  2. 新しい値を追加し、それを;で区切ります。
  3. registryentryを変更するには、指定したキー、エントリ名、および値でSet-ItemPropertyを使用します。

注意

Set-ItemPropertyにはFilter、Include、およびExcludeパラメータがありますが、プロパティ名でフィルタリングするには使用できません。 これらのパラメータは、項目のプロパティであるレジストリエントリではなく、itempathsであるレジストリキーを参照します。別のオプションは、Regを使用することです。exeコマンドラインツール。 Regの助けのために。exe、regと入力します。exe/?コマンドプロンプトで。

次の例では、上記の例で追加されたパスを削除して、パスエントリを変更します。Get-ItemPropertyreg queryからstringreturnedを解析する必要がないように、現在の値を取得するためにまだ使用されています。 SubStringメソッドとLastIndexOfメソッドは、パスエントリに追加された最後のパスを取得するために使用されます。

The operation completed successfully.

新しいレジストリエントリの作成

CurrentVersionキーに”PowerShellPath”という名前の新しいエントリを追加するには、キーへのパス、エントリ名、エントリの値をNew-ItemPropertyを使用します。 この例では、Windows PowerShellのインストールディレクトリへのパスを格納するWindows PowerShell変数$PSHomeの値を取ります。

次のコマンドを使用してキーに新しいエントリを追加することができ、コマンドは新しいエントリに関する情報も返します:

PropertyTypeはMicrosoftの名前でなければなりません。———–RegistryValueKind列挙memberfrom次の表:

PropertyType Value Meaning
Binary Binary data
DWord A number that is a valid UInt32
ExpandString A string that can contain environment variables that are dynamically expanded
MultiString A multiline string
String Any string value
QWord 8 bytes of binary data

pathパラメータの値の配列を指定することにより、レジストリエントリを複数の場所に追加できます。

Forceパラメータを任意のNew-ItemPropertyコマンドに追加することにより、既存のレジストリエントリ値を上書きすることもできます。

レジストリエントリの名前変更

PowerShellPathエントリの名前を”PSHome”に変更するには、Rename-ItemProperty:

Rename-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath -NewName PSHome

名前を変更した値を表示するには、PassThruパラメータをコマンドに追加します。PSHomeレジストリエントリとPowerShellPathレジストリエントリの両方を削除するには、Remove-ItemProperty:

を使用します。レジストリエントリの削除

PSHomeレジストリエントリとPowerShellPathレジストリエントリの両方を削除するには、Remove-ItemProperty:

を使用します。レジストリエントリの削除

レジストリエントリの削除

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です