Foxtable(狐表)用户栏目专家坐堂 → filesys与权限


  共有3225人关注过本帖树形打印复制链接

主题:filesys与权限

帅哥哟,离线,有人找我吗?
lur320
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
filesys与权限  发帖心情 Post By:2019/7/4 9:42:00 [只看该作者]

在使用filesys的功能浏览文件夹内的文件清单。有些文件夹由于客户端的权限不能访问。此时系统会报错而停止。
有什么功能判断是否有权限读取文件夹?
有权限再继续,没权限就跳过该文件夹?

 回到顶部
帅哥哟,离线,有人找我吗?
lur320
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2019/7/4 10:02:00 [只看该作者]

除了try,有没有更明确的方法知道是权限不对才跳过的?

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110788 积分:563872 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2019/7/4 10:08:00 [只看该作者]

还有一个问题。如何判断文件夹里面还有子文件夹?


 回到顶部
帅哥哟,离线,有人找我吗?
lur320
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2019/7/4 10:12:00 [只看该作者]

算了,用递归来找。自己写了

 回到顶部
帅哥哟,离线,有人找我吗?
lur320
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By: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   
---------------------------


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110788 积分:563872 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/4 10:25:00 [只看该作者]

贴出完整代码看看

 回到顶部
帅哥哟,离线,有人找我吗?
lur320
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1030 积分:8973 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2019/7/4 10:26:00 [只看该作者]

我在命令窗口里面测试的

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110788 积分:563872 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 14 1 2 下一页