レジストリキーの所有権を取得し、コマンドラインを使用してアクセス許可を割り当てる
レジストリエディター(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を使用してレジストリキーの所有権とアクセス許可を変更するには:
- SetACLをダウンロードし、コンテンツをフォルダーに解凍します。
- ツールの適切なバージョンの
setacl.exe
(32ビットと64ビット)をフォルダー(例d:\tools
)にコピーしd:\tools
。 - レジストリブランチ
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
を設定し、フルコントロールのアクセス許可を再帰的に割り当てるには、同じコマンドライン構文を使用します。 アカウント/グループ名を変更するだけです。 今回は、次のコマンドを実行する必要があります。
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はい
上記のコマンドを実行した後、 TrustedInstaller
( NT 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)–構文と説明。