Win32:API调用列出服务器上的可用网络共享?

时间:2009-05-22 21:04:45

标签: winapi samba smb network-shares

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

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

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

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

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

4 个答案:

答案 0 :(得分:8)

根据文档,有NetShareEnumWNetEnumResource函数。

答案 1 :(得分:4)

净视图\\ 1.2.3.4

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

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

答案 2 :(得分:0)

您似乎可以使用WMI获取此信息。检查this post以获取一些现在显示的使用Win32_Share WMI对象的简洁PowerShell教程。

答案 3 :(得分:0)

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