当前位置: 首页 > 编程语言 > C#

检查目录是否可以在C#中访问?Share

时间:2023-04-11 02:09:52 C#

检查目录是否可以在C#中访问?可能重复:.NET-检查目录是否可以访问而没有异常处理我正在使用.NET3.5和C#在VisualStudio2010中创建一个小文件浏览器,我有这个功能来检查目录是否可以访问:RealPath=@"c:系统卷信息";publicboolIsAccessible(){//获取目录信息DirectoryInforealpath=newDirectoryInfo(RealPath);try{//如果GetDirectories有效则可以访问realpath.GetDirectories();返回真;}catch(Exception){//如果异常不可访问returnfalse;但我认为对于大型目录,尝试让所有子目录检查目录是否可访问可能会很慢。我正在使用它来防止在尝试浏览受保护的文件夹或没有光盘的cd/dvd驱动器时出现错误(“设备未准备好”错误)。是否有更好(更快)的方法来检查应用程序是否可以访问目录(最好是在.NET3.5中)?根据MSDN,如果您没有目录的读取权限,Directory.Exists应该返回false。但是,您可以使用Directory.GetAccessControl。示例:publicstaticboolCanRead(stringpath){varreadAllow=false;varreadDeny=false;varaccessControlList=Directory.GetAccessControl(路径);如果(accessControlList==null)返回false;varaccessRules=accessControlList.GetAccessRules(true,true,typeof(System.Security.Principal.SecurityIdentifier));如果(accessRules==null)返回false;foreach(AccessRules中的FileSystemAccessRule规则){if((FileSystemRights.Read&rule.FileSystemRights)!=FileSystemRights.Read)continue;如果(rule.AccessControlType==AccessControlType.Allow)readAllow=true;elseif(rule.AccessControlType==AccessControlType.Deny)readDeny=true;}返回readAllow&&!readDeny;我认为您正在寻找GetAccessControl方法,System.IO.File.GetAccessControl方法返回一个封装文件访问控制的FileSecurity对象。以上是C#学习教程:C#中检查目录是否可访问?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: