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只访问能访问的文件夹,不去访问被所绝的文件夹。或者是所有的文件夹都能访问。
请帮助修改!
排除掉$RECYCLE.BIN,或者$开头的目录
判断隐藏文件,参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=79014&authorid=0&page=0&star=1
.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功能还够完善。
Dim ifo As New DirectoryInfo(ml)
If ifo.Hidden = False Then
end if
这样也未必能解决问题。
参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=141609&skin=0
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
错误所在事件:自定义函数,递归目录
详细错误信息:
调用的目标发生了异常。
尝试执行未经授权的操作。