私はこれに対する解決策についてかなり長い間検索してきました。少なくとも私は問題を理解していると思いますが、まだ解決には至っていません。
必要なのは、ある種の実行可能ファイルか、いくつかのレジストリ エントリを削除するスクリプトです。問題は、問題のレジストリ エントリが SYSTEM への読み取り/書き込みアクセスのみを許可し、それ以外のアクセスを許可しないことです。私がそれらを削除できる唯一の方法は、regedit に入り、自分自身を所有者として設定し、最後に全員にフル コントロールを設定することです。そうして初めて、キーを削除できます。ただし、このプロセスを何らかのスクリプトにする必要があります。
そのため、C# では、まずソフトウェアに管理者権限があることを確認します。次に、次のことを実行しようとします。
RegistryKey reg_localmachine = RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "");
RegistryKey key = reg_localmachine.OpenSubKey(@"SYSTEM\path to subkey", true);
2 行目で、書き込みアクセスでサブ キーにアクセスしようとすると、「要求されたレジストリ アクセスは許可されていません」という例外が発生します。所有者を変更したり、アクセス許可を付与したりするには、RegistryKey に対して SetAccessControl() を実行する必要があります。アクセス制御を設定するには、キーに対する書き込み権限が必要です。だから私はこのパラドックスにいます。