确定目录等同性(Windows)

说我有两个目录path:

C:\Shares\Apple\Orange

\\MACHINENAME\Apple\Orange

有没有办法(编程)确定他们是否指向同一目录? 一般来说,如果不比较path,我可以确定两个目录引用是否相同?

这是你可以尝试的一种方法。 它可能会窒息一些东西。 我没有测试过。

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

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

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

  4. 调用GetVolumeInformationByHandle() 。

  5. 比较卷名称。

你是对的说比较路径是一个坏主意。 符号链接,短名称和驱动器号映射以这种方式得到了您的方式。

不,没有\\MACHINENAME明确的带外合作。 在Windows上,SMB协议没有提供唯一标识底层卷的GUID的方法。 协议甚至不保证你正在看实际的音量。