レジストリキー/文字列の編集に関連付けられているAPI関数を呼び出すようにプログラムを制限するにはどうすればよいですか?
Windowsセキュリティモデルは、このまさにシナリオを処理するように設計されています。すべてのレジストリキーには、トラスティ(ユーザーアカウントなど)およびキーに対して実行が許可されているアクション(読み取りなど)を指定するアクセス制御リスト(ACL)があります。
これを活用してアプリケーションを制限するには、管理者以外のユーザーアカウントを作成し、常にそのユーザーのコンテキストでアプリケーションを実行します。Windowsの別のユーザーとして実行機能を使用すると、制限されたアカウントで実際にログオンしなくても、この方法でアプリケーションを実行できます。
デフォルトでは、標準ユーザーは、HKLMブランチなど、レジストリのシステム全体の部分に対する読み取りアクセス権のみを持ち、自分のアカウントのHKCUブランチのみを変更できます。
アカウントのレジストリアクセス許可をさらに制限する場合は、レジストリの適切なブランチを変更して、ユーザーアカウントに必要なアクセス許可を指定する必要があります。Microsoftのプロセスモニターを使用して、アクセスするレジストリパスと、変更されたアクセス許可が必要な可能性があるレジストリパスを確認できます。
ほぼすべてのWindowsアプリケーションが適切な操作のためにレジストリにアクセスする必要があることに留意してください。このようなアクセスを大量にブロックすると、プログラムが意図した機能を実行できなくなる可能性があります。
詳しくは: