2

通过 Windows API 函数 NetShareEnum 或 WNetEnumResource 检索网络共享列表最多需要 60 (!!!) 秒来完成请求。也许有人知道为什么它这么慢?也许可以使用一些 API / 库(如 SMB)以合理的速度枚举共享?

4

2 回答 2

1

至于为什么这么慢,如果主机不可用或由于任何原因(例如需要登录凭据)没有响应,Windows 将等待超过超时限制,对于网络中已知的每个共享(可以是每个主机多个)。Windows 的默认超时时间非常长。

将超时减少到 50 毫秒(在 LAN 中永远不应超过)可能会有所帮助,最终取决于测试的主机数量。

对于 API 的替代方案,我无能为力,抱歉。

于 2011-02-07T08:36:37.007 回答
1

您可能想尝试一些方法,即枚举与 L​​inux 相同的共享(您可以使用 LiveCD)。在我的测试中,我看到路由器还被要求提供可能的网络共享(我的路由器运行 Linux,这是我的 ISP 给我的,所以它可能很常见)。

因此,也许 Windows 长时间向路由器询问网络共享(这不应该发生......)并同步等待它以共享响应。

(将这个 API 设计为同步的天才是谁?)

于 2012-08-04T13:32:41.977 回答