首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

C# 判断文件夹是不是可写

2013-08-06 
C# 判断文件夹是否可写如题!不通过抛出异常的方式,有没有直接获取文件夹此属性的方法。[解决办法]//// 摘要

C# 判断文件夹是否可写
如题!不通过抛出异常的方式,有没有直接获取文件夹此属性的方法。
[解决办法]

  //
        // 摘要:
        //     获取 System.Security.AccessControl.DirectorySecurity 对象,该对象封装当前 System.IO.DirectoryInfo
        //     对象所描述的目录的访问控制列表 (ACL) 项。
        //
        // 返回结果:
        //     一个 System.Security.AccessControl.DirectorySecurity 对象,该对象封装此目录的访问控制规则。
        //
        // 异常:
        //   System.SystemException:
        //     未能找到或修改该目录。
        //
        //   System.UnauthorizedAccessException:
        //     当前进程不具有打开该目录的权限。
        //
        //   System.IO.IOException:
        //     打开目录时发生 I/O 错误。
        //
        //   System.PlatformNotSupportedException:
        //     当前操作系统不是 Microsoft Windows 2000 或更高版本。
        //
        //   System.UnauthorizedAccessException:
        //     目录为只读。- 或 - 在当前平台上不支持此操作。- 或 - 调用方没有所要求的权限。
        public DirectorySecurity GetAccessControl();

[解决办法]

   private static  List<FileSystemRights> GetQuanXian()


        {
            List<FileSystemRights> ret = new List<FileSystemRights>();
            DirectorySecurity dirSec = Directory.GetAccessControl(@"d:\\test.txt", AccessControlSections.All);
            AuthorizationRuleCollection rules = dirSec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); 
            foreach (FileSystemAccessRule rule in rules)
            {
                ret.Add(rule.FileSystemRights);
            }
            return ret;
        }  


ret里面就是各个帐号对该目录的访问权限,你在里面判断一下就知道了,格式是这样的:ReadData 
[解决办法]
 WriteData 
[解决办法]
 AppendData 
[解决办法]
 ReadExtendedAttributes 
[解决办法]
 WriteExtendedAttributes 
[解决办法]
 ExecuteFile 
[解决办法]
 DeleteSubdirectoriesAndFiles 
[解决办法]
 ReadAttributes 
[解决办法]
 WriteAttributes 
[解决办法]
 Delete 
[解决办法]
 ReadPermissions 
[解决办法]
 ChangePermissions 
[解决办法]
 TakeOwnership 
[解决办法]
 Synchronize
------解决方案--------------------


参考 http://blog.csdn.net/linux7985/article/details/8646550
[解决办法]
http://msdn.microsoft.com/zh-cn/library/vstudio/system.security.permissions.fileiopermission%28v=vs.100%29.aspx

热点排行