ファイルに関連付けられているアクセス許可を確認するために、Windows(XP/7)プラットフォーム用のC++コードをいくつか書いています。私が読んでいるファイルは、昇格されていない特権を持つアカウントでは書き込めないことを確認したい。昇格していないユーザーのWindowsでのファイルアクセスの確認
- を私はGetNamedSecurityInfo
- を呼び出して、ファイルに関連付けられているDACLが、私は、このようなWinAuthenticatedUserSid(Usersグループ)として、よく知られてSIDSとCreateWellKnownSidを呼び出して取得する:これは私が現在やっているものです
- 私はGetEffectiv呼び出す前のSID
- とTRUSTEEを構築するためにBuildTrusteeWithSidを呼び出しますeRightsFromAclと以前に作成したトラスティが有効なaclを取得する
- ACLに書き込みフラグが設定されていないことを確認します。
このコードは、Usersグループでは完全に機能しています。 Everyone、ゲスト、またはファイルに特定の書き込みアクセス権を持つ他の特定のユーザーなど、他のグループはどうなりますか?私はすべての可能なSIDを列挙し、すべてのSIDをチェックする必要がないソリューションを探したいと思います。 「管理者以外何でも」などのSIDがありますか?
よろしく、 アリ
ファイルには、1人のユーザーに対して許容ACLが設定されている可能性があります。 'GetEffectiveRightsFromAcl'に頼っている場合は、すべてのユーザーを個別にチェックする必要があります。また、あなたは['AuthzAccessCheck()'](http://msdn.microsoft.com/en-us/library/windows/desktop/aa375788(v = vs.85))にすべての苦労を軽減できるように思えます。 .aspx)。 – MSalters