Foxtable(狐表)用户栏目专家坐堂 → 获取递归目录出错


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

主题:获取递归目录出错

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
获取递归目录出错  发帖心情 Post By:2024/4/17 16:20:00 [只看该作者]

1.此为递归目录函数代码
Dim path As String = args(0) '目录路径
Dim ls As List(Of String) = args(1) 'ls 为目录集合
For Each ml As String In FileSys.GetDirectories(path)
    ls.add(ml) 
Next
For Each p As String In FileSys.GetDirectories(path)
    Functions.Execute("递归目录", p, ls)
Next
2.调用此函数
dim p as string = "D:\"
dim ls as new list(of string)
Functions.Execute("递归目录", p, ls)
3.出现报错
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.6.12.1
错误所在事件:自定义函数,递归目录
详细错误信息:
调用的目标发生了异常。
对路径“D:\$RECYCLE.BIN\S-1-5-18”的访问被拒绝。
分析是权限问题,如何让FileSys.GetDirectories只访问能访问的文件夹,不去访问被所绝的文件夹。或者是所有的文件夹都能访问。
请帮助修改!


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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/17 16:37:00 [只看该作者]

排除掉$RECYCLE.BIN,或者$开头的目录

判断隐藏文件,参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=79014&authorid=0&page=0&star=1

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2024/4/17 16:49:00 [只看该作者]

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.6.12.1
错误所在事件:自定义函数,递归目录
详细错误信息:
调用的目标发生了异常。
对路径“D:\Config.Msi”的访问被拒绝。对路径“D:\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Backup”的访问被拒绝。
对路径“D:\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\FTData”的访问被拒绝。对路径“D:\sqldata\MSAS10_50.MSSQLSERVER\OLAP\Backup”的访问被拒绝。
对路径“D:\sqldata\MSAS10_50.MSSQLSERVER\OLAP\Config”的访问被拒绝。
不仅仅是 含$ 的目录出错,还有其他的很多目录也会出错,均是访问被拒绝。估计和读取权限密切相关,这个FileSys.GetDirectories功能还够完善。

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2024/4/17 16:57:00 [只看该作者]

    Dim ifo As New DirectoryInfo(ml)
    If ifo.Hidden = False Then
    end if
    这样也未必能解决问题。


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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/17 17:13:00 [只看该作者]

参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=141609&skin=0

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


加好友 发短信
等级:三尾狐 帖子:627 积分:6899 威望:0 精华:0 注册:2013/12/17 1:00:00
  发帖心情 Post By:2024/4/17 17:53:00 [只看该作者]

Dim path As String = args(0) '目录路径
Dim ls As List(Of String) = args(1) 'ls 为目录集合
For Each ml As String In FileSys.GetDirectories(path)
    If ml.Contains("$") Then
    Else
        Dim ml_1 As New System.Security.AccessControl.DirectorySecurity(ml, System.Security.AccessControl.AccessControlSections.Access)
        If ml_1.AreAccessRulesProtected = False Then
            ls.add(ml)
        End If 
    End If 
Next

For Each p As String In FileSys.GetDirectories(path)
    Dim s As New System.Security.AccessControl.DirectorySecurity(p, System.Security.AccessControl.AccessControlSections.Access)
    If s.AreAccessRulesProtected = False Then
        Functions.Execute("递归目录", p, ls)
    End If
Next

修改代码后执行,出现如下错误,如何解决?请求帮助,谢谢!

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.6.12.1
错误所在事件:自定义函数,递归目录
详细错误信息:
调用的目标发生了异常。
尝试执行未经授权的操作。



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


加好友 发短信
等级:超级版主 帖子:110743 积分:563641 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/4/18 8:41:00 [只看该作者]

把foxtable设置为“使用管理员身份运行”

 回到顶部