代码之家  ›  专栏  ›  技术社区  ›  marijne

确定目录等效性(Windows)

  •  1
  • marijne  · 技术社区  · 16 年前

    假设我有两个目录路径:

    C:\Shares\Apple\Orange

    \\MACHINENAME\Apple\Orange

    是否有方法(以编程方式)确定它们是否引用同一目录?一般来说,我可以在不比较路径的情况下确定两个目录引用是否等效吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   asveikau    16 年前

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

    1. 呼叫 CreateFile() 在每个目录上 FILE_FLAG_BACKUP_SEMANTICS .

    2. 呼叫 GetFileInformationByHandle() 在两个把手上。

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

    4. 呼叫 GetVolumeInformationByHandle() .

    5. 比较卷名。

    你说比较路径是个坏主意是对的。符号链接、短名称和驱动器号映射会以这种方式妨碍您。

        2
  •  0
  •   MSalters    16 年前

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