我正在编写一个必须在Windows 7计算机上获得网络适配器配置的应用程序,就像在Windows网络适配器配置面板中完成的那样:
到目前为止,NetworkInterface.GetAllNetworkInterfaces()
除了子网前缀长度之外,我几乎可以获得所需的所有信息.
我知道,它可以从C++ STRUC检索PMIB_UNICASTIPADDRESS_TABLE
通过OnLinkPrefixLength
,但我想留在.NET.
我还看了一下Win32_NetworkAdapterConfiguration
WMI类,但它似乎只返回了IP v4子网掩码.
我也知道一些信息(不是前缀长度,据我所知)在注册表中:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters\Interfaces\{CLSID}
Run Code Online (Sandbox Code Playgroud)
我还使用SysInternals ProcessMon尝试在保存网络适配器设置时获得任何有用的东西但却一无所获......
那么,有没有什么干净的.NET方法来获得这个价值?(从注册表中获取它不会有问题)
这与实际问题无关,但对于需要检索整个网络适配器IPv6配置的用户,该IPInterfaceProperties.GatewayAdresses
属性仅支持IPv4网关.正如下面的答案评论中提到的,在.NET Framework 4.5之前获取整个信息的唯一方法是调用WMI.