2013-06-21 20 views
0

鉴于以下情况:我有一个连接到SMB共享的Windows客户端。我想以递归方式潜入该共享中的目录以对文件执行某些操作(想象一下,如果超过特定大小,请为它们计算sha1哈希值)。如何检测递归链接的目录?

我通常会这样做:递归dirInfo.EnumerateDirectories()捕获一些特殊情况,如未经授权的访问并将文件排队到操作员线程(然后计算sha1)。

挑战:递归符号链接。我testscenario很简单

[email protected]:~$ ls -l /home/me/tmp/recursionStartsHere 
lrwxrwxrwx recursion -> /home/me/tmp/recursionStartsHere 

我已经试过(除了googlin)是使用dirInfo.Attributes.HasFlag(FlagAttributes.ReparsePoint)以检测(当然)不奏效符号链接。暴力破解方法似乎将每个单独的目录与其内容中累积的校验和进行索引 - 这可能甚至不是无冲突的。

由于我现在出于实际的想法,我怎么能告诉某个目录是(只)符号链接?当然,我更喜欢平台独立,所以我的代码对于远程SMB以及本地NTFS驱动器都是一样的。

回答