通过Windows API函数检索网络共享列表NetShareEnum或WNetEnumResource最多需要60(!!!)秒才能完成请求。也许有人知道为什么这么慢?也许可以使用一些API /库(如SMB)以理智的速度枚举股票?
答案 0 :(得分:1)
至于为什么它如此慢,如果主机不可用或因任何原因没有响应(例如需要登录凭据),Windows将等待超出超时限制,对于网络中已知的每个共享(每个主机可以多个)。 Windows的默认超时时间非常长。
将超时减少到50毫秒(在局域网中永远不应超过)可能会有所帮助,最终取决于测试的主机数量。
对于API的替代方案,我无能为力,抱歉。
答案 1 :(得分:1)
您可能想要尝试一些事情,即使用Linux枚举相同的共享(您可以使用LiveCD)。在我的测试中,我已经看到路由器也被要求可能的网络共享(我的路由器运行Linux,这是我的ISP给我的,所以它可能很常见)。
因此,也许Windows长时间要求路由器获取网络共享(这不应该发生......)并且同步等待它回应共享。
(谁设计这个API是同步的天才?)