【问题标题】:Retrieve the server name from a UNC path从 UNC 路径检索服务器名称
【发布时间】:2009-05-23 17:45:12
【问题描述】:

windows 中是否有从 UNC 路径检索服务器名称的 api? (\\服务器\共享)
还是我需要自己做?
我找到了 PathStripToRoot,但它不起作用。

【问题讨论】:

    标签: windows winapi networking


    【解决方案1】:

    我不知道用于解析 UNC 路径的 Win32 API;但是您应该检查:

    • \\computername\share
    • \\?\UNC\computername\share(人们使用它来访问大于 260 个字符的长路径)
    • 您也可以选择处理这种情况:smb://computername/share 和这种情况hostname:/directorypath/resource

    Read here for more information

    【讨论】:

      【解决方案2】:

      这是未经测试的,但也许 PathIsUNC() 和 PathFindNextComponent() 的组合可以解决问题。

      【讨论】:

        【解决方案3】:

        我不知道是否有特定的 API,我会自己实现简单的字符串处理(跳过“\\”或返回 null,查找下一个 \ 或字符串结尾并返回substring) 可能首先调用 PathIsUNC()

        【讨论】:

        • 这就是我现在所做的,但正在检查是否有一个以防万一有一些例外
        • 如果 实际上是一个 IP 地址而不是计算机名呢?
        • IP 地址不会包含斜线,所以只要您只是在寻找斜线,没问题。
        • 不确定是否记录在案,但 PathIsUNCServer() 似乎确实存在
        【解决方案4】:

        如果您以纯文本形式接收数据,您应该能够使用简单的正则表达式对其进行解析,但不确定您使用的是哪种语言,但我倾向于使用 perk 进行此类快速搜索。假设您有一个包含多行的大文档,每行包含一个路径,您可以在 \\'s I.e 上搜索 m/\\\\([0-9][0-9][0-9]\.(重复3次,当然不记得IP地址要求你可能需要肯定修改第一个) then\\ )?为了使其可选并包含尾部斜杠,最后是 (.*)\\/ig 它很粗糙,但应该可以解决问题,并且路径名应该在 $2 中以供使用!

        我希望这已经足够清楚了!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-25
          • 2010-11-06
          • 1970-01-01
          • 1970-01-01
          • 2023-01-07
          • 2010-12-05
          • 1970-01-01
          • 2019-12-26
          相关资源
          最近更新 更多