金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 看清客户是或不是对路径具有访谈权限,格局能

看清客户是或不是对路径具有访谈权限,格局能

发布时间:2019-11-01 21:47编辑:编程浏览(192)

    如何获取当前系统用户对文件/文件夹的操作权限?

    图片 1图片 2

      关于这类问题网上搜索会有很多解决方案,但基本的意思都相差不大,大致问题出于启用线程时调用类似剪贴板Clipboard.SetDataObject出错,我把我的测试代码展现下:

     1.获取安全信息DirectorySecurity

    DirectorySecurity fileAcl = Directory.GetAccessControl(folder);

    通过Directory.GetAccessControl获取文件夹的权限/安全信息

    详细介绍,可参考MSDN官方文档)

    对文件/文件夹权限的详细操作,可参考一篇博客C#文件夹权限操作

     

    图片 3

    2. 获取文件夹访问权限列表FileSystemAccessRule

    var rules = fileAcl.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)).OfType<FileSystemAccessRule>().ToList();

    GetAccessRules()方法返回的是AuthorizationRule集合,此处只需要获取文件权限。

    FileSystemAccessRule.aspx)继承自AuthorizationRule,并新增俩个属性

    • AccessControlType -- 枚举 Allow/Deny
    • FileSystemRights -- 对文件的访问权限详细信息(读/写等),可见下面列表: 

    图片 4图片 5

     1   /// <summary>定义要创建访问和审核规则时使用的访问权限。</summary>
     2   [Flags]
     3   public enum FileSystemRights
     4   {
     5     ReadData = 1,
     6     ListDirectory = ReadData, // 0x00000001
     7     WriteData = 2,
     8     CreateFiles = WriteData, // 0x00000002
     9     AppendData = 4,
    10     CreateDirectories = AppendData, // 0x00000004
    11     ReadExtendedAttributes = 8,
    12     WriteExtendedAttributes = 16, // 0x00000010
    13     ExecuteFile = 32, // 0x00000020
    14     Traverse = ExecuteFile, // 0x00000020
    15     DeleteSubdirectoriesAndFiles = 64, // 0x00000040
    16     ReadAttributes = 128, // 0x00000080
    17     WriteAttributes = 256, // 0x00000100
    18     Delete = 65536, // 0x00010000
    19     ReadPermissions = 131072, // 0x00020000
    20     ChangePermissions = 262144, // 0x00040000
    21     TakeOwnership = 524288, // 0x00080000
    22     Synchronize = 1048576, // 0x00100000
    23     FullControl = Synchronize | TakeOwnership | ChangePermissions | ReadPermissions | Delete | WriteAttributes | ReadAttributes | DeleteSubdirectoriesAndFiles | Traverse | WriteExtendedAttributes | ReadExtendedAttributes | CreateDirectories | CreateFiles | ListDirectory, // 0x001F01FF
    24     Read = ReadPermissions | ReadAttributes | ReadExtendedAttributes | ListDirectory, // 0x00020089
    25     ReadAndExecute = Read | Traverse, // 0x000200A9
    26     Write = WriteAttributes | WriteExtendedAttributes | CreateDirectories | CreateFiles, // 0x00000116
    27     Modify = Write | ReadAndExecute | Delete, // 0x000301BF
    28   }
    

    View Code

     因为AuthorizationRule中,IdentityReference对应权限的用户/用户组标识,格式为:"MYDOMAINMyAccount"

    所以,如通过当前系统用户名与IdentityReference匹配,即可获取FileSystemAccessRule权限。如何获取用户名,见下一段落

      解决方案:只需将thread.SetApartmentState(ApartmentState.STA);反注释就可以了。

    本文由金沙国际官网发布于编程,转载请注明出处:看清客户是或不是对路径具有访谈权限,格局能

    关键词:

上一篇:没有了

下一篇:没有了