以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  获取递归目录出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191455)

--  作者:kgdce
--  发布时间: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只访问能访问的文件夹,不去访问被所绝的文件夹。或者是所有的文件夹都能访问。
请帮助修改!


--  作者:有点蓝
--  发布时间: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
--  发布时间: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
--  发布时间:2024/4/17 16:57:00
--  
    Dim ifo As New DirectoryInfo(ml)
    If ifo.Hidden = False Then
    end if
    这样也未必能解决问题。


--  作者:有点蓝
--  发布时间:2024/4/17 17:13:00
--  
参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=141609&skin=0
--  作者:kgdce
--  发布时间: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
错误所在事件:自定义函数,递归目录
详细错误信息:
调用的目标发生了异常。
尝试执行未经授权的操作。



--  作者:有点蓝
--  发布时间:2024/4/18 8:41:00
--  
把foxtable设置为“使用管理员身份运行”