レジストリキーの所有権を取得し、コマンドラインを使用してアクセス許可を割り当てる

レジストリエディター(regedit.exe)を使用して、レジストリキーとサブキーの所有権を変更する方法を見てきました。 また、RegASSASSINを使用してレジストリキーのアクセス許可をリセットする方法や頑固なキーを削除する方法についても説明しました。 この記事では、コマンドラインを使用してレジストリキーの所有権を変更し、アクセス許可を付与する方法について説明します。

Windowsには、ファイル/フォルダーの所有権とアクセス許可を変更するためのtakeown.exeおよびicacls.exeコンソールユーティリティがありますが、コマンドラインを使用してレジストリキーの所有権を変更するための組み込みのツールはありません。 タスクにはSetACLという名前のサードパーティツールが必要です。

SetACL:コマンドライン引数

先に進む前に、SetACLを使用してファイル/レジストリの所有権とアクセス許可を変更するためのコマンドライン構文を見てみましょう。

 SetACL -on objectname -ot objecttype -actnアクション 
  • -on :SetACLが操作するオブジェクトへのパスを指定します(例:ファイル、レジストリキー、ネットワーク共有、サービス、またはプリンター)。
  • -ot :オブジェクトタイプを指定します。 ファイルまたはフォルダーの所有権またはアクセス許可を変更するには、オブジェクトタイプfile使用しfile 。 レジストリキーには、オブジェクトタイプreg使用します。
  • -actn :指定されたオブジェクトに対してSetACLが何を行うかに関するアクションを指定します。 所有権を取得するには、アクションをsetownerとして設定します。 権限を変更するには、アクションをace設定します。

(オブジェクト、タイプ、およびサポートされるアクションの完全なリストについては、SetACLのドキュメントを参照してください。)

レジストリキーの所有権を取得し、コマンドラインを使用してアクセス許可を割り当てる

SetACLを使用してレジストリキーの所有権とアクセス許可を変更するには:

  1. SetACLをダウンロードし、コンテンツをフォルダーに解凍します。
  2. ツールの適切なバージョンのsetacl.exe (32ビットと64ビット)をフォルダー(例d:\tools )にコピーしd:\tools
  3. レジストリブランチHKEY_CLASSES_ROOT\CLSID\{D63B10C5-BB46-4990-A94F-E40B9D520160}所有権を変更し、 Administratorsグループにフルコントロールのアクセス許可を付与するとします。 管理コマンドプロンプトウィンドウから次の2つのコマンドを実行します。
     SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:Administrators" SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46- 4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n:Administrators; p:full " 

    SetACL:レジストリキーの所有権を変更し、完全なアクセス許可を割り当てる
    • 最初のコマンドは、 Administratorsグループをキーの所有者として設定します
    • 2番目のコマンドは、 Administratorsグループにキーのフルコントロールアクセス許可を割り当てます。

Administratorsグループはキーとそのサブキーを所有しており、レジストリエディターを使用して確認できるフルコントロールのアクセス許可も持っています。


重要:このキーとサブキーの所有権とアクセス許可を変更するには、最後に-rec Yes引数を追加します。 詳細については、下の図を参照してください。


レジストリキーのアクセス許可を変更するときにエラーが発生しましたか?

SetACLは、アクセスできないファイル/フォルダーまたはレジストリキーのアクセス許可を変更しようとすると、次のエラーを報告します。 このエラーを防ぐには、アクセス許可を変更する前に、まずキーの所有権を取得してください。

SetACLはエラーで終了しました:

SetACLエラーメッセージ:SetNamedSecurityInfo()の呼び出しに失敗しました

オペレーティングシステムのエラーメッセージ:アクセスが拒否されました。

所有権を取得し、アクセス許可を再帰的に割り当てます(このキーとサブキー)

所有権を変更し、指定したキーとそのサブキーに( Administrators )フルコントロールのアクセス許可を付与するには、以下に示すように、末尾に-rec Yesスイッチを含めます。

 SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:Administrators" -rec Yes SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5 -BB46-4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n:Administrators; p:full "-recはい 

TrustedInstallerを所有者として設定する

上記のレジストリキーの所有者としてTrustedInstallerを設定し、フルコントロールのアクセス許可を再帰的に割り当てるには、同じコマンドライン構文を使用します。 アカウント/グループ名を変更するだけです。 今回は、次のコマンドを実行する必要があります。

$config[ads_text6] not found
 SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160}" -ot reg -actn setowner -ownr "n:nt service \ trustedinstaller" -rec Yes SetACL.exe -on "HKEY_CLASSES_ROOT \ CLSID \ {D63B10C5-BB46-4990-A94F-E40B9D520160} "-ot reg -actn ace -ace" n: "nt service \ trustedinstaller"; p:full "-recはい 

上記のコマンドを実行した後、 TrustedInstallerNT SERVICE\TrustedInstaller )をキーとサブキーの所有者として設定します。

追加情報

  • MicrosoftのSubInACL: Windows XP時代にMicrosoftからリリースされたSubInACLという別のコンソールツールもあります。 これは、Windows XP / 2003リソースキットツールの一部です。 SubInACLを使用して、ファイル/フォルダーとレジストリの所有権とアクセス許可を設定できます。 ただし、SubInACLはMicrosoftによって廃止され、デフォルトで32ビットのファイルおよびレジストリパス(Windows 64ビットシステム)になっているため、状況によっては64ビットバージョンのWindowsで使用できなくなります。
  • MicrosoftのRegini.exe:別の組み込みコンソールツールregini.exeがあり、テキストベースのファイルを使用してレジストリのアクセス許可を変更できます。 ただし、regini.exeはレジストリキーの所有権を変更できません。 regini.exeの詳細については、コマンドプロンプトウィンドウを開いて「 regini.exe /?と入力してregini.exe /?
  • Helge KleinのSetACLは広く推奨されるツールであり、SubInACLによって残された空白を確実に埋め、regini.exeの欠点にも対処します。 SetACLは、この記事で説明する以外にも多くのことができます。

詳細については、SetACLのドキュメントを参照してください:SetACLコマンドラインバージョン(SetACL.exe)–構文と説明。

関連記事