确定目录等效性(Windows)

时间:2009-11-13 09:24:38

标签: windows filesystems

假设我有两个目录路径:

C:\Shares\Apple\Orange

\\MACHINENAME\Apple\Orange

有没有办法(以编程方式)确定它们是否引用同一目录?通常,我可以在不比较路径的情况下确定两个目录引用是否相同吗?

2 个答案:

答案 0 :(得分:1)

这是您可以尝试的方式。它可能会扼杀某些东西。我还没有测试过。

  1. 使用FILE_FLAG_BACKUP_SEMANTICS在每个目录上拨打CreateFile()

  2. 在两个句柄上调用GetFileInformationByHandle()

  3. 比较文件索引,卷序列号。

  4. 致电GetVolumeInformationByHandle()

  5. 比较卷名。

  6. 你说比较路径是个坏主意是对的。符号链接,短名称和驱动器号映射会妨碍您的使用。

答案 1 :(得分:0)

不,不是没有来自\\MACHINENAME的明确的带外合作。在Windows上,SMB协议不公开获取唯一标识基础卷的GUID的方法。该协议甚至不保证您正在查看实际音量。