4

を使用してこれを実行しようとしましたがGetEffectiveRightsFromAcl、所属しているグループのために拒否されたファイルの正しいアクセス マスクが返されません。

たとえば、ファイルがありますunreadable.txt。現在のユーザーの書き込みアクセスを拒否するunreadable.txtと、アクセス マスクは書き込みアクセス権がないことを正しく示します。ただし、代わりに「Authenticated Users」グループの書き込みアクセスを拒否すると、アクセス マスクは私がフル アクセス権を持っていることを意味します (私は持っていません)。

別の方法として、Ace リストを手動で繰り返し、SID を各エントリと比較することもできましたが、Ace がグループ用であるかどうか、および現在のユーザーがそのグループの一部であるかどうかを確認するためのクリーンで簡単な方法を見つけることができません。

拡張子として、ファイルが存在しない可能性があります (つまり、新しいファイルであり、書き込まれようとしている)。この場合、ディレクトリへのアクセスを確認する必要があります。

これに対する良い解決策はありますか?問題のファイルを実際に読み書きしようとせずに、これを行うためのより簡単な方法が存在するはずです。

4

2 に答える 2

3

GetEffectiveRightsFromAcl APIの制限に関するナレッジベースの記事で推奨されているように、代わりにAccessCheckを使用してください。

于 2012-06-01T02:46:13.940 に答える
1

を使用して目的のモードでファイルを開いてみてくださいCreateFile。成功した場合は、アクセス権があることがわかります。実際にファイルに何も書き込む必要はありません。すぐに閉じてください。

于 2012-06-01T02:44:58.250 に答える