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

网线未插接时如何通过.NET获取Windows以太网预存配置

Windows以太网拔线状态下配置生效机制与未应用配置访问方法

复现前置条件

  • 以太网适配器处于已启用状态
  • 以太网物理网线已拔出,网卡链路未连通

配置分层生效的实际逻辑

观察到的新旧配置显示不一致现象,是Windows网络栈的分层设计导致的,不存在配置延迟存储的逻辑:

  • 持久化配置层:通过Windows设置、netsh命令修改IP/DHCP配置时,新配置会立刻写入系统持久化存储,修改操作返回成功就代表存储完成。Windows设置UI读取的就是这一层的配置值,因此修改后会立刻展示新设置。
  • 运行时生效层:这是TCP/IP协议栈实际运行时加载使用的配置集合,只有当网卡检测到物理链路连通(即网线插入、链路状态Up)时,系统才会自动从持久化层拉取最新配置加载到运行时栈。ipconfig、传统netsh查询接口、.NET基础网络API默认读取的都是这一层的运行时值,因此拔线状态下会显示上一次链路连通时加载的旧配置,直到插线触发配置重载才会更新。

未正式应用配置的.NET访问方式

已保存但未加载到运行时的持久化配置,不需要直接读取注册表,通过WMI接口即可合规访问:

  1. 先通过System.Net.NetworkInformation.NetworkInterface类枚举网卡,拿到目标以太网适配器对应的Id属性值,即网卡实例GUID。
  2. 通过System.Management命名空间下的WMI接口查询Win32_NetworkAdapterConfiguration类对应实例,拿到的属性就是和设置UI一致的持久化配置值,不受网线连通状态、运行时配置是否更新影响。

参考实现代码:

using System.Net.NetworkInformation;
using System.Management;

// 枚举拿到目标以太网适配器
var ethernetAdapter = NetworkInterface.GetAllNetworkInterfaces()
    .First(ni => ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet && ni.OperationalStatus != OperationalStatus.NotPresent);
string adapterGuid = ethernetAdapter.Id;

// 查询对应网卡的持久化配置
using var configSearcher = new ManagementObjectSearcher(
    $"SELECT DHCPEnabled,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE SettingID='{adapterGuid}'");
foreach (ManagementObject adapterConfig in configSearcher.Get())
{
    bool dhcpEnabled = (bool)adapterConfig["DHCPEnabled"];
    string[] savedIps = (string[])adapterConfig["IPAddress"] ?? Array.Empty<string>();
    string[] savedSubnets = (string[])adapterConfig["IPSubnet"] ?? Array.Empty<string>();
    string[] savedGateways = (string[])adapterConfig["DefaultIPGateway"] ?? Array.Empty<string>();
    string[] savedDns = (string[])adapterConfig["DNSServerSearchOrder"] ?? Array.Empty<string>();
    
    // 上述变量拿到的就是已保存、未触发运行时生效的最新配置
}

注意:.NET Core/.NET 5+ 环境下使用WMI接口,需要先安装System.Management官方NuGet包。

补充说明

持久化配置实际存储在注册表路径 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{网卡GUID} 下,对应键值和上述WMI返回的属性一一对应,非必要不建议直接读写注册表路径,避免系统版本差异导致的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 13:15:41