注:上記の MSalters に同意します。そもそもそこに入れなかったレジストリキーを削除する際には、非常に注意することをお勧めします。ランダムな typelib のエントリを削除することは、不要であることが確実でない限り、必ずしも良い考えではありません。
バグを再現するためにソフトウェアがキーを削除するのを防ぎ、ソフトウェアがその仕事を続けられるようにしたいと考えています。ただし、(少なくとも) 3 つの原因が考えられるため、レジストリ クリーナーがそれらすべてを適切に処理できることを確認する必要があります。
レジストリ キーの削除を妨げる可能性のあるもの
鍵はまだ開いていますか?
まず (そしておそらく)、キーへのハンドルが開いている間はキーを削除できません。これは仕様によるものであり、ドキュメントに記載されています。
ただし、キーのすべての値を削除したり、それ自体が開いていないサブキーを削除したりすることはできます。
また、自分で開いたキーは削除できないことに注意してください。そのため、自分でハンドルを開いていないことを確認してください。
SysInternals プロセス エクスプローラーを使用して、自分のプロセスまたは他のプロセスでレジストリ キーが開いているかどうかを確認できます。
許可はありますか?
次に、キーを削除する権限があることを確認する必要があります。パーミッションを設定して、パーミッションの変更を含め、誰も特定のアクションまたはアクションをまったく実行できないようにすることができます。例外として、所有者は常にアクセス許可を変更でき、管理者は所有者を自分自身に変更できます。
そのため、キーを削除する権限がなく、所有者でもない場合は、「所有権の取得」権限が必要になります。次に、所有権を取得し、アクセス許可を変更してキーを削除できるようにしてから、キーを削除します。通常、管理者は「所有権の取得」権限を持っています。
RegEdit.exe を使用して、レジストリ キーのアクセス許可を調べることができます。もちろん、アクセス許可を表示するアクセス許可があればです。
アクションがセキュリティ ソフトウェアによってブロックされていませんか?
最後に、システム内のすべてのアクションは、アンチウイルス プログラムなどのセキュリティ ソフトウェアによって拒否される可能性があります。これは、アクセス拒否エラーとしても現れます。
レジストリ キーの削除を防ぐ方法
したがって、レジストリ キーの削除を防ぐには、次のことができます。
- キーを開いて保持するプロセスを作成します。
- 権限を変更して、すべてのユーザーに対して削除権限を拒否します。
- レジストリ呼び出しをインターセプトし (迂回路を使用するなど)、キーの削除を許可しないデバイス ドライバーをインストールします。