首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取文件夹的权限(短版本)

获取文件夹的权限(短版本)
EN

Stack Overflow用户
提问于 2013-09-03 08:34:18
回答 2查看 516关注 0票数 3

我使用以下代码返回详细的文件夹权限

代码语言:javascript
复制
return (from permissionName in Enum.GetNames(typeof(FileSystemRights))
            let val =
                Convert.ToInt32(
                    Enum.Parse(typeof(FileSystemRights), permissionName), CultureInfo.InvariantCulture)
            where
                (val != 0x1f01ff) && (val != 0x301bf) && (val != 0x20089) && (val != 0x200a9) && (val != 0x116)
            where ((int)this.FileSystemRule.FileSystemRights & val) > 0
            select permissionName).ToList();

我怎样才能得到简短的版本,即:

换句话说,我只想返回

  1. 全控
  2. 修改
  3. 读取和执行
  4. 列表文件夹内容
  5. 朗读
  6. 特殊(适用于任何其他组合)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 15:40:13

只要列出所需的权限,您就可以简化您的逻辑。例如:

代码语言:javascript
复制
private readonly FileSystemRights[] namesIWant = new FileSystemRights[]
{
    FileSystemRights.FullControl, 
    FileSystemRights.Modify, 
    FileSystemRights.ReadAndExecute,
    FileSystemRights.ListDirectory,
    FileSystemRights.Read,
    FileSystemRights.Write
};

然后,LINQ表达式变成:

代码语言:javascript
复制
return (from perm in namesIWant
        where (this.FileSystemRule.FileSystemRights & perm) != 0
        select perm.ToString()).ToList();
票数 5
EN

Stack Overflow用户

发布于 2013-09-06 07:38:28

我想和您分享这一点,为了使它对我有效,我不得不将> singe更改为== @Jim的代码修改为:

代码语言:javascript
复制
return (from perm in namesIWant
        where (this.FileSystemRule.FileSystemRights & perm) == perm 
        select perm.ToString()).ToList();

另外,从FileSystemRights.ListDirectory,中删除NamesIWant,因为它包括ReadReadData,如果保留它,就会有重复的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18587581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档