我正在编写一个实用程序来帮助更改某个文件的文件权限,以允许/禁止 Windows 机器上的“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);
}
但是,我想检查“每个人”是否已经拥有完全控制权限并且无法找到执行此操作的方法。在谷歌搜索之后,我花了几天时间在谷歌搜索中进行搜索,但无法找到一种方法来做到这一点。有人可以指出我正确的方向或给我一个如何做到这一点的例子吗?
更新: 这很快就得到了回答,我能够想出有效的 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");
}
}
}
}