【问题标题】:Win32: API calls to list available network shares on a server?Win32:API 调用列出服务器上可用的网络共享?
【发布时间】:2009-05-22 21:04:45
【问题描述】:

假设我可以访问 IP 1.2.3.4 的 SMB 服务器,我如何确定可用共享列表?

当我输入 UNC 路径 \\1.2.3.4\ 时,Windows 资源管理器可以执行此操作 - 但命令提示符“dir \\1.2.3.4\”失败!

我已经尝试了通常的 FindFirstFile/FindNext 调用 - 我成功地使用它来读取每个共享上的文件和目录,但它们不能直接在服务器根目录上工作。

理想情况下,我需要一些适用于 XP 以上版本的东西。

编辑:我想以编程方式执行此操作,而不是从命令行。重定向和解析来自 'net view 1.2.3.4' 的输出会起作用,但理想情况下我正在为这项工作寻找 API。

【问题讨论】:

    标签: winapi samba smb network-shares


    【解决方案1】:

    根据文档,有一个 NetShareEnum 和一个 WNetEnumResource 函数。

    【讨论】:

      【解决方案2】:

      网络视图\\1.2.3.4

      查看http://www.ss64.com/nt/net_share.html

      编辑:如果您想以编程方式执行此操作,看起来NetShareEnum 可以工作。

      【讨论】:

      • +1:谢谢,这很有用。我希望有一种基于 API 的方式来做到这一点。解析 net view 的输出是可行的,但是...
      • 如果你想查看所有共享(包括隐藏的)然后使用“net view \\1.2.3.4 /ALL”
      【解决方案3】:

      看来您可以使用 WMI 来获取此信息。查看this post 获取一些简洁的 PowerShell 教程,这些教程现在显示如何使用 Win32_Share WMI 对象。

      【讨论】:

        【解决方案4】:

        永远不要使用 WMI(本机未安装)
        使用Win32 api枚举分享,在google groups上发帖数百万次(win32)

        【讨论】:

        • WMI 从 Windows XP 开始就存在了,所以再一次,停止编造。
        猜你喜欢
        • 2011-12-09
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 2017-03-29
        • 2014-07-26
        相关资源
        最近更新 更多