小编Tho*_*app的帖子

如何检查"Everyone"是否对c#中的文件具有完全控制权限

我正在编写一个实用程序来帮助更改某个文件的文件权限,以允许/禁止对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);
}
Run Code Online (Sandbox Code Playgroud)

但是,我想检查一下"Everyone"是否已经拥有完全控制权限,并且无法找到执行此操作的方法.我在谷歌搜索后花了几天时间搜索谷歌搜索,但却找不到办法.有人可以指出我正确的方向或给我一个如何做到这一点的例子吗?

更新: 这个答案非常快,我能够提出有效的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");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# windows

4
推荐指数
1
解决办法
2087
查看次数

标签 统计

.net ×1

c# ×1

windows ×1