0

このメソッドを使用して、レジストリキーへのアクセスを許可/拒否します。

最初のGRANT_ACCESS

AddAceToObjectsSecurityDescriptor(wKey, SE_REGISTRY_KEY, UserName, TRUSTEE_IS_NAME, GENERIC_ALL, GRANT_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);

次にDENY_ACCESS

AddAceToObjectsSecurityDescriptor(wKey, SE_REGISTRY_KEY, UserName, TRUSTEE_IS_NAME, GENERIC_ALL, DENY_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);

彼らは両方とも働いた。この2回の呼び出しの後、アクセスを許可するために最初の呼び出しをもう一度呼び出そうとしています。しかし、私にはできません。ERROR_ACCESS_DENIEDのようなエラーメッセージはありません。AddAceToObjectsSecurityDescriptorはエラーコードを返しません。そして、私のユーザーアカウントは、対応するレジストリキーの所有者です。さらに、同じユーザー名でregeditを使用して、アクセス許可を手動で変更することもできます。AddAceToObjectsSecurityDescriptorメソッドに何か問題がありますか?

4

2 に答える 2

1

DENY_ACCESS to および SET_ACCESS を使用してみてください。例:

AddAceToObjectsSecurityDescriptor(wKey, SE_REGISTRY_KEY, UserName, TRUSTEE_IS_NAME, GENERIC_ALL, SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);

AddAceToObjectsSecurityDescriptor(wKey, SE_REGISTRY_KEY, UserName, TRUSTEE_IS_NAME, GENERIC_ALL, DENY_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT);
于 2015-08-24T09:41:37.267 に答える
0

最後の呼び出しは、指定されたオブジェクト (レジストリ キー) へのアクセスを拒否するためのものだったので、アクセスを拒否したのと同じオブジェクトに正常にアクセスすることは期待できません。これが ERROR_ACCESS_DENIED を取得する理由です。あなたはオブジェクトの所有者であるため、もちろんオブジェクトの所有権を取得し、必要に応じてセキュリティ記述子をリセットできます。

于 2012-06-10T16:24:33.487 に答える