代码之家  ›  专栏  ›  技术社区  ›  David Arno

如何以编程方式访问windows符号链接的目标路径?

  •  12
  • David Arno  · 技术社区  · 16 年前

    CreateSymbolicLink

    我发现符号链接是重分析点的实现,因此重分析点函数可用于获取目标路径。但我需要使用重分析点的头文件似乎与 Windows Driver Kit . 使用VS2008设置此工具包似乎是一项非常重要的任务。

    编辑:Adam Mitz提出了GetFinalPathNameByHandle的建议。此函数对于本地符号链接非常有效,但对于解析远程链接(通过UNC路径)似乎不起作用。

    编辑2:应Adam的要求,以下是我尝试的更多细节:

    FSCTL_GET_REPARSE_POINT / DeviceIoControl 路线,但这会产生一个 REPARSE_DATA_BUFFER

    GetFinalPathNameByHandle() 当链接存在于本地磁盘上时,工作正常( C:\...\link 等等)。奇怪的是,我发现我可以使用 CreateFileW() FILE_FLAG_OPEN_REPARSE_POINT 无论目标文件是否存在,都未指定标志。

    什么时候 GetFinalPathNameByHandle() \\?\UNC\.... ),事情开始分崩离析。如果 规定,, GetFinalPathNameByHandle() 始终返回链接路径,而不是目标路径。如果 文件\u标志\u打开\u重新分析\u点

    1 回复  |  直到 16 年前
        1
  •  12
  •   Adam Mitz    16 年前

    GetFinalPathNameByHandle

    最终路径是 断然的。例如,对于一个符号 名为“C:\tmp\mydir”的链接指向 路径应该是“D:\yourdir”。