You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用WNetOpenEnum枚举Microsoft Windows Network节点返回1231错误如何解决?

故障原因分析

你调用的WNetOpenEnum/WNetEnumResource属于Windows legacy网络枚举接口,完全依赖SMB1协议配套的计算机浏览器服务和NetBIOS协议实现局域网设备枚举。而Windows 10 1709之后默认禁用SMB1,同时资源管理器早就切换到了基于WS-Discovery的Function Discovery框架实现设备发现,这就是资源管理器能正常显示、但老API返回空的核心原因,Sysinternals的ShareEnum同样依赖这套老接口,所以也会报错。

排查步骤
  • 先检查计算机浏览器服务状态:运行services.msc,找到Computer Browser服务,确认其启动类型为自动,且当前处于运行状态。域环境下如果本机未实际加入域、或域内主浏览器节点异常,该服务无法同步网络设备列表,就会返回ERROR_NETWORK_UNREACHABLE错误。
  • 确认SMB1客户端组件安装:打开「控制面板-程序和功能-启用或关闭Windows功能」,找到SMB 1.0/CIFS 文件共享支持,勾选其中的SMB 1.0/CIFS 客户端子项(无需开启服务端,避免安全风险),配置完成后重启生效。
  • 验证域加入状态:运行命令systeminfo | findstr /B /C:"域",确认本机实际加入的域名和网络位置显示的域一致。新网络迁移后很容易出现网络位置识别错误,把工作组网络误标记为域网络,导致老枚举接口走域浏览逻辑但无法拉取列表。
  • 检查NetBIOS启用状态:打开网卡属性-IPv4属性-高级-WINS页,确认NetBIOS over TCP/IP设置为「默认」或「启用」,老API依赖NetBIOS实现设备名称解析和发现,新网络如果全局禁用了NetBIOS也会触发该错误。
长期替代方案

如果不想依赖已经被微软标记为废弃、存在严重安全风险的SMB1协议,可以将枚举逻辑切换为Windows现在官方推荐的Function Discovery COM接口,枚举结果和资源管理器「网络」节点完全一致,无需依赖SMB1、计算机浏览器服务和NetBIOS协议。

内容的提问来源于stack exchange,提问作者Ilia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:45:11