以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- filesys与权限 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137355) |
-- 作者:lur320 -- 发布时间:2019/7/4 9:42:00 -- filesys与权限 在使用filesys的功能浏览文件夹内的文件清单。有些文件夹由于客户端的权限不能访问。此时系统会报错而停止。 有什么功能判断是否有权限读取文件夹? 有权限再继续,没权限就跳过该文件夹?
|
-- 作者:lur320 -- 发布时间:2019/7/4 10:02:00 -- 除了try,有没有更明确的方法知道是权限不对才跳过的? |
-- 作者:有点蓝 -- 发布时间:2019/7/4 10:04:00 -- 试试 Dim dirPath = "E:\\问题" Dim dir As New system.io.DirectoryInfo(dirPath) Dim ds As new System.Security.AccessControl.DirectorySecurity(dirPath , System.Security.AccessControl.AccessControlSections.Access) msgbox(ds.AreAccessRulesProtected) \'true为有权限控制,false表示没有权限控制,可以读写 |
-- 作者:lur320 -- 发布时间:2019/7/4 10:08:00 -- 还有一个问题。如何判断文件夹里面还有子文件夹? |
-- 作者:lur320 -- 发布时间:2019/7/4 10:12:00 -- 算了,用递归来找。自己写了 |
-- 作者:lur320 -- 发布时间:2019/7/4 10:18:00 -- 这个好像不行。 --------------------------- 版本:2018.9.9.1 --------------------------- 代码执行出错,错误信息: System.UnauthorizedAccessException: Attempted to perform an unauthorized operation. at System.Security.AccessControl.Win32.GetSecurityInfo(ResourceType resourceType, String name, SafeHandle handle, AccessControlSections accessControlSections, RawSecurityDescriptor& resultSd) at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext) at System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory) at System.Security.AccessControl.DirectorySecurity..ctor(String name, AccessControlSections includeSections) at UserCode.Test() --------------------------- OK --------------------------- |
-- 作者:有点蓝 -- 发布时间:2019/7/4 10:25:00 -- 贴出完整代码看看 |
-- 作者:lur320 -- 发布时间:2019/7/4 10:26:00 -- Dim dirPath = "************olete" Dim dir As New system.io.DirectoryInfo(dirPath) Dim ds As new System.Security.AccessControl.DirectorySecurity(dirPath , System.Security.AccessControl.AccessControlSections.Access) Output.show(ds.AreAccessRulesProtected) \'true为有权限控制,false表示没有权限控制,可以读写
|
-- 作者:lur320 -- 发布时间:2019/7/4 10:26:00 -- 我在命令窗口里面测试的 |
-- 作者:有点蓝 -- 发布时间:2019/7/4 10:37:00 -- 试试 Dim dirPath = "E:\\问题" Dim fileAcl = system.io.Directory.GetAccessControl(dirPath ) Dim userAccessRules = fileAcl.GetAccessRules(True, True, Gettype(System.Security.Principal.NTAccount)) For Each ff As object In userAccessRules If ff.AccessControlType = System.Security.AccessControl.AccessControlType.Deny Then msgbox("没有权限") Exit For End If Next msgbox("有权限") [此贴子已经被作者于2019/7/4 14:32:28编辑过]
|