Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

PowerShell のレジストリ キー作成:管理者のための完全ガイド

PowerShell のレジストリ キー作成:管理者のための完全ガイド

Aug 25, 2025

PowerShell は、レジストリ キーと値を作成・編集・削除するために、regedit や reg.exe よりも安全で効率的な代替手段を提供します。たとえば New-Item, Set-ItemProperty, Remove-Item および Rename-ItemProperty により、オートメーション、リモート管理、エラー処理が可能になります。管理者はレジストリをバックアップし、昇格した権限で PowerShell を実行し、 Test-Path と try/catch を使って誤った構成を避けてください。適切な保護策があれば、PowerShell によりローカル/リモートのレジストリ管理がどちらもスムーズになります。

管理者は、定番の regedit のユーザー インターフェイス、または reg.exe ユーティリティのいずれかを使って、Windows レジストリの一般的な操作をすべて行えます。ですが、もう一つの選択肢があります。それが PowerShell です。PowerShell は、ローカル マシンでもリモートでも、レジストリ管理の作業を大幅に効率化できます。

この記事では、PowerShell を使ってレジストリ キーとその値を作成・管理・削除する方法を詳しく解説します。さらに、PowerShell を使ってリモート コンピューター上のレジストリを管理するなどの高度な操作についても説明します。


Windows レジストリとは?

Windows レジストリは、Microsoft Windows オペレーティング システムとアプリケーションのための構成設定やその他の重要な情報を保存する階層型データベースです。たとえば、プログラムをインストールすると、その設定や状態を保存するために、レジストリ内に新しいサブキーや値を作成できるほか、Windows との統合をより深く行うために既存のエントリを変更することもあります。

カーネル、デバイス ドライバー、サービス、Security Accounts Manager はすべてレジストリを利用できます。デスクトップ設定、ファイルの関連付け、アプリケーションの優先設定など、ユーザーごとの設定はレジストリに保存され、Windows コンピューター上の各ユーザー アカウントに対してパーソナライズされた体験を提供します。さらに、レジストリはシステム パフォーマンスをプロファイリングするためのカウンターへのアクセスも可能にします。

レジストリの構造

Windows レジストリは、ルートキー、サブキー、および値から成る階層構造を持っています。

ルートキー(ハイブ)

ルートキーは、すべてのサブキーおよび値が属する大分類です。これには次のものが含まれます。

  • HKEY_CLASSES_ROOT (HKCR) — ファイルの関連付けや OLE オブジェクトのクラスIDなど、登録済みアプリケーションに関する情報を含みます。
  • HKEY_CURRENT_USER (HKCU) — 現在ログインしているユーザーに固有の設定(デスクトップの設定やアプリケーションの設定など)を保存します。
  • HKEY_LOCAL_MACHINE (HKLM) — すべてのユーザーに対して、コンピューター固有の構成情報を保持します。これには、システムのハードウェア設定、インストール済みソフトウェア設定、セキュリティ ポリシーが含まれます。
  • HKEY_USERS (HKU) — コンピューター上で現在アクティブに読み込まれているすべてのユーザー プロファイルを含みます。HKCU は実際には HKU のサブキーであり、現在ログインしているユーザーを指します。
  • HKEY_CURRENT_CONFIG (HKCC) — 現在のハードウェア プロファイルの設定にリンクしており、頻繁にアクセスされるシステム デバイスと設定の詳細を示します。
registry editor screenshot

サブキー

各ルート キーには複数のサブキーが含まれており、そのサブキーの中にはさらにサブキーが含まれる場合があります。その結果、木のような階層構造が作られます。サブキーはファイル システム内のフォルダーと同様の働きをし、関連する設定をグループに整理します。

各サブキーには、関連付けられた type があり、 values(データ)として割り当てられる内容を決定します。使用可能な型には、REG_SZ(文字列)、REG_BINARY(バイナリ値)、REG_DWORD(32ビットの数値)があります。

system folder screenshot

注意:変更を行う前にレジストリをバックアップしてください

Windows レジストリには、オペレーティング システムとアプリケーションが動作するために不可欠な構成と設定が含まれています。不適切な変更を行うと、システムの不安定化やアプリケーション エラーにつながるほか、Windows の起動そのものを妨げる可能性もあります。

そのため、PowerShell またはその他のツールでレジストリを編集する前に、バックアップまたはシステムの復元ポイントを作成してください。これにより、何か問題が起きた場合でもシステムを以前の状態に復元できます。このガイドでは、レジストリのバックアップと復元の手順を後ほど説明します。


PowerShell と Windows レジストリ

PowerShell は、Windows レジストリを管理するための堅牢な一連の cmdlet を提供しており、Regedit などの従来の方法と比べて、よりきめ細かく強力なアプローチを可能にします。PowerShell を使用すれば、レジストリキーや値の作成に加えて、それらの変更や削除も行えます。PowerShell を使ってレジストリを管理することは、システム構成を管理する必要があるシステム管理者や、複数のマシンに変更を効率的に適用したいパワーユーザーにとって特に有用です。

PowerShell の利点

PowerShell は、システム管理、構成管理、タスク自動化を容易にするために Microsoft が開発したスクリプト言語です。PowerShell は .NET フレームワーク上に構築されているため、オブジェクトや .NET 関数を扱うことができます。PowerShell の主な利点には次のようなものがあります:

  • 自動化とスクリプト— PowerShell はスクリプトによって反復作業を自動化できるため、多数のシステムを効率的に管理する必要があるシステム管理者にとって強力なツールになります。
  • 幅広い cmdlet のコレクション — PowerShell は、ファイル操作からレジストリやプロセスの管理まで、一般的なシステム管理タスクを行うための豊富な事前定義済み cmdlet を提供します。
  • パイプラインのサポート — ユーザーはあるコマンドの出力を別のコマンドの入力として渡せるため、最小限のコードで複雑な処理を実現できます。
  • 幅広い機能 — PowerShell のスクリプト言語は、変数、ループ、条件に加え、エラー処理や並列処理などの高度な機能もサポートしています。
  • ローカルおよびリモート管理 — PowerShell は Windows Management Instrumentation (WMI) と COM(Component Object Model)オブジェクトにアクセスできるため、ローカル/リモートの両方のシステムで幅広い管理タスクを実行できます
  • 拡張可能なインターフェース — ユーザーやサードパーティのベンダーは、カスタム cmdlet、モジュール、関数、スクリプトを開発することで PowerShell の機能を拡張できます。

レジストリ管理における PowerShell プロバイダーの役割

PowerShell のプロバイダーにより、ユーザーは Windows レジストリやその他のデータ ストア(例:ファイル システムや証明書ストア)に対して、統一された方法でアクセスおよび管理できます。これにより、標準の PowerShell コマンドを使用して、さまざまな形式で保存されたデータを一貫した形で利用できるようになります。

プロバイダーにより、ファイルシステムでディレクトリやファイルをたどるのと同様に、レジストリの階層構造を巡回できます。レジストリ キーをフォルダーのように出入りできるため、レジストリ設定の確認や管理が直感的になります。

PowerShell のレジストリ管理向け Cmdlet

PowerShell には、Windows レジストリを管理するために設計された一連の cmdlet が用意されています。たとえば、New-Item cmdlet を使用して、PowerShell でレジストリ キーを作成できます。レジストリ管理に使われる主要な cmdlet の概要は次のとおりです:

  • Get-Item — 指定した場所にあるレジストリ キーを取得します
  • Set-Item — レジストリ キーの値を変更します
  • New-Item — PowerShellでレジストリ キーを追加します
  • Remove-Item — レジストリ キーとその値を削除します
  • Get-ItemProperty — レジストリ キーのプロパティ(値)を取得します
  • Remove-ItemProperty — レジストリ キーから値を削除します
  • Set-ItemProperty — レジストリ キーの値を変更します
  • Get-ChildItem — レジストリ キーのサブキーと値を一覧表示します

レジストリ管理のための PowerShell 設定

管理者として PowerShell を実行する

多くの場合、レジストリを変更するには昇格された権限が必要です。そのため、PowerShell は昇格モードで実行する必要があります。これは「running as administrator(管理者として実行)」としても知られています。たとえば、システム ファイルの変更や、コンピューター上のすべてのユーザーに影響するレジストリ設定または構成の変更には、管理者権限が必要です。また、ファイアウォール ルールの設定や IP アドレスの構成などのネットワーク設定タスクにも管理者権限が必要です。さらに、スクリプトを実行するために実行ポリシーを変更する場合や、Windows システムにソフトウェアをインストール、更新、または削除する場合にも、管理者権限が必要になることがよくあります。

昇格(管理者)モードで PowerShell を開くには、以下の手順に従ってください。ユーザー アカウント制御(User Account Control、UAC) が表示されたら はい をクリックして続行します。

Windows 10 および Windows 11

  1. スタート メニュー(Windows アイコン)をクリックし、検索バーに PowerShell と入力します。
  2. 検索結果で Windows PowerShell または Windows Terminal(設定によって異なります)を右クリックします。
  3. コンテキスト メニューから 管理者として実行 を選択します。

Windows Server

  1. [Start Menu]を開き、Windows PowerShell または Windows Terminal をプログラム一覧から探します。
  2. 「Windows PowerShell」または「Windows Terminal」を右クリックします。
  3. Run as administrator を選択します。

プロバイダーとドライブに関する情報を取得する

現在の PowerShell セッションで利用可能なプロバイダーとドライブに関する情報を取得するには、Get-PSProvider および Get-PSDrive の cmdlet を使用できます。

利用可能なプロバイダー情報の取得(Get-PSProvider)

サポートしている機能の詳細や、それらに関連付けられているドライブを含めて、利用可能な PowerShell プロバイダーの情報を取得するには、次の cmdlet を使用します:

Get-PSProvider

powershell screenshot

利用可能なドライブ情報の取得(Get-PSDrive)

PowerShell のドライブは、ファイル システム、レジストリ キー、証明書、環境変数など、さまざまなデータ ストアの論理的な表現です。現在の PowerShell セッションで利用可能なドライブに関する情報を取得するには、次を使用します。Get-PSDrive の cmdlet。ファイル システム ドライブのようにストレージを表すドライブでは、使用済み容量と空き容量も表示されます。

Get-PSDrive

Get PSDrive screenshot

PowerShell を使用したレジストリ キーの作成、管理、編集

新しいレジストリ キーの作成(New-Item)

PowerShell の New Item の cmdlet を使用して、レジストリ キーを作成できます:

      New-Item -Path "HKCU:\Software\MyNewApplication"
      
New Item screenshot

PowerShell を使用してレジストリ キーを作成した後、Get-Item:を使用して操作が成功したかを確認できます

      Get-Item -Path "HKCU:\Software\MyNewApplication"
      
Get item path screenshot

レジストリ キーが存在するか確認する (Test-Path)

エラーや望ましくない結果を避けるために、これらの項目に影響を与えるコマンドを実行する前に Test-Path を実行して、レジストリ キー、ファイル、およびその他の項目の存在を確認することを推奨します。ここに簡単な例を示します:

      Test-Path -Path "HKCU:\Software\MyNewApplication"
      
Test Path screenshot

そして、より詳細な出力を提供するもう少し複雑なスクリプトは次のとおりです:

      # Check if HKCU\Software\MyNewApplication exists

if (Test-Path -Path “HKCU:\Software\MyNewApplication”) {

    Write-Output "Registry key 'HKCU:\Software\MyNewApplication' exists."

} else {

    Write-Output "Registry key 'HKCU:\Software\MyNewApplication' does not exist."

}
      
Registry Key screenshot

よくあるエラーの対処

PowerShell を使用して Windows レジストリを管理する際に、エラーが発生することがあります。ここでは、よくある問題と対処方法を紹介します。:

  • アクセスが拒否されました — このエラーは、適切な権限がない状態でレジストリを変更しようとした場合に頻繁に発生します。昇格された権限が必要な操作を行うときは、PowerShell を右クリックして 管理者として実行 を選択してください。
  • 不正なパス — 誤字や不正なパス指定はエラーの原因になります。アクセスまたは変更しようとしているレジストリ パスを必ず再確認してください。レジストリ パスは大文字と小文字を区別します。
  • Cmdlet を認識できません — このエラーは、レジストリ管理用の cmdlet をサポートしない古いバージョンの PowerShell を使用していることを示している場合があります。お使いのシステムで利用可能な最新バージョンに PowerShell を更新してください。
  • スクリプトの実行が無効化されています — セキュリティ設定により、PowerShell がスクリプトの実行を防ぐように構成されている可能性があります。これを変更するには、次を実行できます。Set-ExecutionPolicy RemoteSigned(または、セキュリティ要件に合う別のポリシーレベルを指定します)。実行ポリシーを変更するとシステムがリスクにさらされる可能性があるため、注意してください。
  • データ型エラー — レジストリ キーを作成または変更するときは、正しいデータ型を使用していることを確認してください。
  • 項目が存在しません — 存在しないレジストリ キーまたは値にアクセスしたり変更したりしようとすると、エラーになります。操作を試みる前に Test-Path を使って、レジストリ パスが存在することを確認してください。
  • ワイルドカードの不適切な使用 — ワイルドカードは状況によって便利ですが、不適切に使うと、広範囲にわたる意図しない変更やエラーにつながる可能性があります。ワイルドカードは慎重に使用し、-WhatIf パラメーターを使って、実行前に変更内容をプレビューすることを検討してください。

PowerShell を使用してレジストリ キーと値を追加および更新する

新しいキーと値を追加(New-ItemProperty)

PowerShell を使用してレジストリ キーを追加し、 New ItemProperty cmdlet で値を割り当てることができます。基本的な構文は次のとおりです:

      New-ItemProperty -Path "HKCU:\Software\MyNewApplication" -Name "Setting_Name" -Value "Setting_Value" -PropertyType "String"
      

たとえば、次のコマンドは NewString という名前の新しいレジストリ キーを作成し、値 Hello を割り当てます:

      New-ItemProperty -Path "HKCU:\Software\MyNewApplication" -Name "NewString" -PropertyType String -Value "Hello"
      
Hello example screenshot
NewString in folder screenshot

同様に、値 NewDWORD を持つサブキー 1234 を作成するには、この cmdlet を使用します:

      New-ItemProperty -Path "HKCU:\Software\MyNewApplication" -Name "NewDWORD" -PropertyType DWord -Value 1234
      
powershell screenshot
new dword screenshot

レジストリ値の更新(Set-ItemProperty)

PowerShell でレジストリ キーを編集するには、Set-ItemProperty cmdlet を使用します:

PowerShell を使用してレジストリ値を設定する方法は次のとおりです:

      Set-ItemProperty -Path "HKCU:\Software\MyApplication" -Name "Setting_Name" -Value "New_Value"
      

PowerShell を使ってレジストリ値を変更することもできます。たとえば、レジストリに保存されているアプリケーション設定の値を更新するには、次のようなコマンドを使用できます:

      Set-ItemProperty -Path "HKCU:\Software\MyNewApplication" -Name "NewString" -Value "Hello World"
      

Set-ItemProperty は PowerShell のレジストリ編集タスクを実行するための効果的な方法ですが、この cmdlet は出力を何も生成しません。変更を確認するには Get-Item:

      Get-Item -Path "HKCU:\Software\MyNewApplication"
      
newstring screenshot

あるいは、レジストリ エディターで変更内容を確認できます:

registry editor screenshot

もう 1 つ例を見てみましょう。サブキー名 NewDWORD の値を 5678 に変更したい場合は、この cmdlet を使用します:

      Set-ItemProperty -Path "HKCU:\Software\MyNewApplication" -Name "NewDWORD" -Value 5678
      

変更内容を確認するには、Get-Item コマンドレットを使用します:

      Get-Item -Path "HKCU:\Software\MyNewApplication"
      
newDword selected screenshot

レジストリ値の削除(Remove-ItemProperty)

レジストリ値を削除するには、Remove-ItemProperty コマンドレットを使用できます:

      Remove-ItemProperty -Path "HKCU:dummyNetwrixKey" -Name "NetwrixParam"
      

レジストリキーの削除(Remove-Item)

レジストリキーを削除するには、Remove-Item を下に示すように使用します。 –Recurse パラメーターは、追加の確認なしですべてのサブキーを削除します。

      Remove-Item -Path "HKCU:dummyNetwrixKey" -Recurse
      

指定したキー自体を削除せずに、その中にあるすべてのサブキーを削除するには、パスの末尾に * 記号を追加します:

      Remove-Item -Path "HKCU:dummyNetwrixKey*" -Recurse
      

レジストリ値の名前変更(Rename ItemProperty)

レジストリキーの値の名前を変更するには、Rename ItemProperty コマンドレットを使用します:

      Rename-ItemProperty -Path "HKCU:dummyNetwrixKey" -Name "NetwrixParam" -NewName "NetwrixNewParam"
      

レジストリキーの名前変更(Rename-Item)

レジストリキーの名前を変更するには、Rename-Item コマンドレットを使用します:

      Rename-Item -Path "HKCU:dummyNetwrixKey"  NetwrixNewKey
      

PowerShell を使用した高度なレジストリ操作

高度なレジストリ操作には、PowerShell App Deployment Toolkit を使用することや、PowerShell によるリモートのレジストリ管理を行うことが含まれます。

PowerShell App Deployment Toolkit(PSADT)の使用

PSADT は、アプリケーションをデプロイおよび管理するためのスクリプトとツールの集合です。特定の設定やユーザーとのやり取りが必要な複雑なアプリケーション、またはカスタムアプリケーションのデプロイに、一般的に使用されます。また、新しいバージョンや変更に対応するためにデプロイスクリプトを修正することで、アプリケーションの更新やパッチ適用にも利用できます。さらに、組織はデプロイ中にユーザーへ分かりやすいメッセージ、プロンプト、フィードバックを提供するためにも PSADT を使用し、ユーザーの認識と協力を高めます。

主な機能とメリットは次のとおりです:

  • デプロイスクリプト — これらのスクリプトにより、アプリケーションのインストール手順を定義し、カスタマイズできます。前提条件の確認、ソフトウェアのインストール、設定の構成、インストール後の後処理などのタスクを処理できます。
  • カスタマイズ可能なユーザーインターフェース — デプロイ中にユーザーへプロンプト、通知、進行状況バーを表示することで、フィードバックを提供し、ユーザーとのやり取りを管理しやすくなります。
  • ログ記録機能 — デプロイの実行状況やエラーを記録することは、トラブルシューティングや監査の目的で不可欠です。
  • インストール前後のタスク — インストール前にシステムを準備するためのタスクを定義し、その後に追加の設定やクリーンアップ処理を行えます。
  • アプリケーション向けの構成設定 — デプロイ中に動的に適用される設定を定義できます。これにより、デプロイ手順をさまざまな環境や要件に合わせて調整するのに役立ちます。
  • サイレント アプリケーション インストール — 必要に応じて、ユーザー操作なしでデプロイを実行できます。

リモート レジストリ管理(Enter-PSSession と Invoke-Command)

管理者は PowerShell を使用して、ネットワーク内のリモート コンピューターのレジストリにアクセスし、移動(ナビゲーション)し、変更できます。PowerShell を使ってリモートでレジストリを編集する際は注意してください。不適切な変更は、システムの不安定化やセキュリティ上の脆弱性につながる可能性があります。また、必要な管理者権限があること、さらにファイアウォールとネットワーク設定でリモート アクセスが許可されていることも確認してください。

リモート レジストリ管理に使用される主な PowerShell コマンドは以下のとおりです。

  • Enter-PSSession は、1 台のリモート コンピューターとの対話型セッションを確立するために使用され、Exit-PSSession はセッションを終了するために使用されます。
  • Invoke-Command は、1 台以上のリモート コンピューターに 1 つのコマンドまたはスクリプト ブロックを送信するために使用します。たとえば、複数のシステムにわたって同じレジストリ変更を効率的に反映できます。

Enter-PSSession と Exit-PSSession

Enter-PSSession は、1 台のリモート コンピューターと対話型セッションを開始するために使用します。複数のコマンドを対話的に実行する必要がある状況で特に役立ちます。セッションに入ると、リモート システムに直接ログインしているのと同じように、レジストリ操作を行えます。手順は次のとおりです:

を使用する前に Enter-PSSession, 次のコマンドで、リモート コンピューターで PowerShell Remoting が有効になっていることを確認してください。:

      Enable-PSRemoting
      

対話型セッションを開始するには、この cmdlet を実行します。:

      Enter-PSSession -ComputerName Windows11 -Credential Get-Credential
      
windows powershell screenshot

接続されていることを確認するには、プロンプトの前にリモート コンピューター名が表示されているかを確認します:

console screenshot

接続が完了すると、標準の PowerShell の cmdlet を使ってレジストリを対話的に管理できます。たとえば、この cmdlet を実行すれば、リモート コンピューターからレジストリ値を取得できます:

      Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\BitLocker"
      
administrator window screenshot

リモート セッションを終了してローカルの PowerShell プロンプトに戻るには、Exit-PSSession の cmdlet を使用します。

Invoke-Command

Invoke-Command は、1 台以上のリモート コンピューターでコマンドを実行できるようにします。非対話型のタスクや、スクリプトからコマンドを実行する必要がある場合に便利です。たとえば、リモート コンピューターからレジストリ値を取得するには、次のコマンドを使用できます:

      Invoke-Command -ComputerName Windows11 -Credential Get-Credential -ScriptBlock {

    Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\BitLocker"

}

You can specify multiple computers as follows:

-ComputerName 'Computer1', 'Computer2'
      

を実行すると Invoke-Command リモート マシンの認証情報の入力を求められます:

Invoke command screenshot

有効な認証情報を入力して OK をクリックすると、実行したスクリプトの出力が表示されます:

code block screenshot

リモート レジストリ管理のためのセキュリティに関する考慮事項

PowerShell を使用してレジストリをリモートで編集する場合は、次のセキュリティに関するベスト プラクティスに従ってください:

  • 安全な認証方法を使用してください。
  • を使用して、すべての通信が暗号化されていることを確認してください。 -UseSSL パラメーターを Enter-PSSession または Invoke-Command と一緒に使います。
  • PowerShell のリモーティングを慎重に有効化し、アクセスを信頼できるホストとネットワークに制限してください。
  • リモートアクセスに PowerShell を使用するユーザーやプロセスには、必要最小限の権限のみを付与してください。
  • 不正なスクリプトが実行されないように、制限の厳しい実行ポリシーを設定してください。
  • Just Enough Administration (JEA) を使用してアクセスを制限します。JEA は、PowerShell で管理できるものなら何でも委任管理を可能にするセキュリティ技術です。
  • ファイアウォールのルールを設定して、PowerShell のリモーティングポートへのアクセスを制限してください(デフォルトでは HTTP が 5985、HTTPS が 5986)。

レジストリ管理のベストプラクティス

PowerShell を使って Windows レジストリを効果的かつ安全に管理するために、次の点を必ず確認してください:

  • レジストリの構造を理解してください。 特に、HKEY_LOCAL_MACHINE と HKEY_CURRENT_USER のハイブ、およびそれらのサブキーについて、レジストリ構造に慣れてください。
  • 変更を行う前にレジストリをバックアップしてください。 どのような変更でも、特に大量の変更やシステムの安定性に影響を与える可能性のある変更を行う場合は、必ずレジストリをバックアップしてください。バックアップおよび復旧手順は、次のセクションで説明します。
  • 管理者として実行してください。 多くのレジストリの変更には管理者権限が必要です。エラーを避けるために、昇格した権限で PowerShell を実行していることを確認してください。
  • 慎重に行ってください。 レジストリはシステムの動作において重要な役割を担っているため、特にキーや値を削除する場合は、操作には細心の注意を払ってください。
  • 重要なキーを直接編集しないでください。 レジストリに誤った変更を加えると、特に HKEY_LOCAL_MACHINE\System のような重要なキーでは、システムの不安定化や障害につながる可能性があります。
  • エラーハンドリングを使用してください。 コードの周囲に try/catch ブロックを実装して例外を管理します。特に、レジストリ エントリが存在しない可能性がある場合に有効です。
  • パスをハードコードしないでください。 可能な限り、変数と組み込みの PowerShell コマンドを使用してパスを動的に解決します。この実践により、スクリプトの移植性と可読性が向上します。
  • 安全な環境でテストしてください。 本番システムに変更を適用する前に、対象環境を再現した仮想マシンなど、制御された環境でスクリプトをテストします。テスト環境で問題を特定し、対処することは、本番システムの安定性を守るのに役立ちます。
  • 変更内容を文書化してください。 PowerShell スクリプトによって行ったすべてのレジストリ変更を、詳細に記録してください。文書には、変更の目的、変更前の状態、そして期待される影響を含める必要があります。この運用はトラブルシューティングや監査に非常に役立ちます。
  • 対応している場合はトランザクションを使用してください。 対応している cmdlet とともに -UseTransaction スイッチを使用すると、何か問題が起きた場合に操作を元に戻せます。
  • サイバーセキュリティのベストプラクティスに従ってください。 最小権限の原則 を徹底することや、機密情報をハードコーディングしないことなど、基本的なセキュリティのベストプラクティスを守りましょう。

レジストリ設定をバックアップして復元する方法

PowerShell または regedit を使用して レジストリを復元 する設定をバックアップおよび復元できます。

一部の変更は反映されるまでに再起動が必要になる場合があります。

PowerShell の使用

レジストリをバックアップするには、管理者として PowerShell を開き、次のコマンドを使用します:

      reg export HKCU\Software\MyNewApplication C:\registry_backup.reg
      
administrator powershell screenshot

バックアップからレジストリを復元するには、次のコマンドを使用します:

      reg import c:\registry_backup.reg
      
registry backup screenshot

レジストリ エディター(regedit)の使用

レジストリ エディターを使用してレジストリ ハイブをバックアップするには、以下の手順に従ってください。

  • レジストリ エディターを開きます。 方法の1つは、Win + Rを押して「regedit」と入力し、Enterを押します。 別の方法として、レジストリ エディターを スタート メニューで検索して開くこともできます。
  • バックアップしたいレジストリ ハイブを右クリックして、エクスポートを選択します。
export screenshot
  • バックアップ ファイルを保存する場所を選び、ファイルに分かりやすい名前を付け、エクスポート範囲が すべて に設定されていることを確認します。
  • 「保存」をクリックして、エクスポートしたレジストリ設定を含む .reg ファイルを作成します。
document export screenshot

レジストリ バックアップから復元するには、次の手順に従ってください:

  • レジストリ エディターで ファイル > インポート をクリックします。
import window screenshot
  • バックアップ .reg ファイルを保存した場所へ移動し、それを選択して 開く をクリックします。
import registry file
  • 確認メッセージが表示されたら OK をクリックして、レジストリ エディターに戻ります。
Registry editor message screenshot

結論

PowerShell を使うと、IT プロはさまざまなレジストリ管理の作業を効率化できます。しかし、たとえ 1 回でも不適切な変更を行うと、OS がブルースクリーン(Blue Screen of Death)になる可能性があることを忘れないでください。したがって、レジストリに変更を加える前に、何を変更するのかを 100% 確認し、最新のバックアップを用意しておく必要があります。さらに、自分が行ったすべての変更を慎重に追跡してください。 Netwrix Auditor for Windows Server は役立ちます。Windows レジストリへの変更を追跡し、レポートし、アラートを出します。

よくある質問(FAQ)

PowerShell を使ってレジストリ キーを追加し、リモート デスクトップ サービス(RDS)を無効にするにはどうすればよいですか?

RDS を無効にするには、fDenyTSConnections の値を 1 に設定します。使用例のコマンドは次のとおりです。

      Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections -Value 1
      

PowerShell でレジストリ キーを追加しようとすると「Type:」プロンプトが表示されるのはなぜですか?

Type: のプロンプトは通常、PowerShell の cmdlet が必要なパラメーターをすべて指定せずに実行されたか、またはコマンドに構文エラーがあるために表示されます。

PowerShell で新しい項目を追加するときに、レジストリ パスが存在しない場合はどうすればよいですか?

目的のパスが存在しない場合は、New-Item cmdlet を使って作成できます。

      New-Item -Path "HKCU:\Software\MyNewApplication"
      

この問題を避けるには、PowerShell で新しい項目を追加する前に、Test-Path cmdlet を使って、アクセスしようとしているレジストリ パスが存在するかどうかを確認します:

      Test-Path -Path "HKCU:\Software\MyNewApplication"
      

PowerShell でレジストリ値(registry value)を作成または更新するには、キーが存在しない場合にキーも作成されるようにするにはどうすればよいですか?

次のスクリプトでは、Test-Path、New-Item、およびSet-ItemProperty の cmdlet を使って、指定したレジストリ パス(registry path)が存在するかどうかを確認し、存在しない場合は、指定したレジストリ値(registry value)を設定または更新する前に作成します:

      # Define registry path, key name, and value

$Path = "HKCU:\Software\MyNewApplication"

$propertyName = "Version"

$propertyValue = "829"

# Check if the registry path exists, create if not

if (-Not (Test-Path $Path)) {

    Write-Output "Registry path does not exist. Creating it"

    New-Item -Path $Path -Force | Out-Null

}

# Set registry value

Set-ItemProperty -Path $Path -Name $propertyName -Value $propertyValue
      

レジストリ キーと値を追加または更新するための「reg add」に相当する PowerShell コマンドは何ですか?

PowerShell でレジストリ キーと値を作成する、または既存のものを更新するには、Set-ItemProperty の cmdlet を使用できます:

      Set-ItemProperty -Path "HKCU:\Software\MyNewApplication" –Name “Version” -Value “839”
      

PowerShell で New-Item に -Force を付けて使うとき、なぜ注意が必要ですか?

Force パラメーターを New-Item と一緒に使用するのは、既存の項目を意図せず上書きしてしまったり、その他の予期しない影響が発生したりする可能性があるため、リスクになり得ます。New-Item を使う前に、項目の存在を確認するのがベストプラクティスです。特に -Force を使用する場合はなおさらです。

PowerShell を使って HKCU の特定のパスにレジストリ キーを追加するには、どのコマンドを使用すればよいですか?

PowerShell を使って HKCU(HKEY_CURRENT_USER)ハイブの特定のパスにレジストリ キーを追加するには、 New-Item cmdlet を次のように使用できます:

      New-Item -Path "HKCU:\Software\MyNewApplication"
      

無料の Windows レジストリ チュートリアル

詳しく見る


共有する

もっと詳しく

著者について

Tyler Reese

プロダクト マネジメント担当副社長、CISSP

ソフトウェア セキュリティ業界で20年以上の経験を持つ Tyler Reese は、今日の企業が直面している急速に変化するアイデンティティおよびセキュリティ上の課題について深く理解しています。現在、彼は Netwrix Identity and Access Management ポートフォリオのプロダクト ディレクターを務めており、市場動向の評価、IAM 製品ラインの方向性の設定、そして最終的にはエンド ユーザーのニーズに応えることが主な責任です。彼の専門的な経験は、Fortune 500 企業向けの IAM コンサルティングから、大手のダイレクト・トゥ・コンシューマー企業のエンタープライズ アーキテクトとしての業務まで多岐にわたります。現在、彼は CISSP の認定資格を保有しています。