特定のファイルのアクセス許可を変更して、Windows マシンの「Everyone」グループのアクセスを許可/禁止するユーティリティを作成しています。これまでのところ、次のコードを使用して、「Everyone」のフル コントロール アクセス許可をファイルに設定および削除することができました。
void AddFullControl()
{
FileSecurity fsFile = File.GetAccessControl("file.tmp");
fsFile.SetAccessRule( new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
File.SetAccessControl("file.tmp", fsFile);
}
void RemoveFullControl()
{
FileSecurity fsFile = File.GetAccessControl("file.tmp");
fsFile.SetAccessRule( new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Deny));
File.SetAccessControl("file.tmp", fsFile);
}
ただし、「Everyone」が既にフル コントロールのアクセス許可を持っているかどうかを確認したいのですが、これを行う方法を見つけることができませんでした。Google 検索の後に Google 検索を精査するのに数日を費やしましたが、これを行う方法を見つけることができませんでした。誰かが私を正しい方向に向けたり、これを行う方法の例を教えてもらえますか?
更新: これは非常に迅速に回答され、機能する C# コードを思いつくことができました。私が作成したコードは次のとおりです。
void CheckAccess()
{
AuthorizationRuleCollection arcFile = File.GetAccessControl("file.tmp").GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
foreach (AuthorizationRule arFile in arcFile)
{
if (arFile.IdentityReference.Value == "Everyone")
{
FileSystemAccessRule fasrFile = (FileSystemAccessRule)arFile;
if (fasrFile.AccessControlType == AccessControlType.Allow && fasrFile.FileSystemRights.HasFlag(FileSystemRights.FullControl))
{
MessageBox.Show("file.tmp already has Full Control permissions granted to Everyone");
}
}
}
}