Я кодирую приложение, которое должно получить конфигурацию сетевых адаптеров на компьютере под управлением Windows 7, как это было сделано на панели конфигурации сетевых адаптеров Windows:
До сих пор я могу получить практически всю необходимую мне информацию из NetworkInterface.GetAllNetworkInterfaces()
ИСКЛЮЧИТЬ длину префикса подсети.
Я знаю, что его можно извлечь из С++ struc PMIB_UNICASTIPADDRESS_TABLE
через OnLinkPrefixLength
, но я пытаюсь остаться в .net.
Я также рассмотрел класс Win32_NetworkAdapterConfiguration
WMI, но он возвращает только маску подсети IP v4.
Я также знаю, что некоторая информация (а не длина префикса, насколько я знаю) находится в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters\Interfaces\{CLSID}
Я также использовал SysInternals ProcessMon, чтобы попытаться получить что-нибудь полезное при сохранении настроек сетевого адаптера, но ничего не нашел...
Итак, есть ли какой-либо чистый способ .NET, чтобы получить это значение? (получение его из реестра не будет проблемой)
РЕДАКТИРОВАТЬ: Шлюзы
Это не касается фактического вопроса, но для тех, кому необходимо получить всю конфигурацию IPv6 для сетевого адаптера, свойство IPInterfaceProperties.GatewayAdresses
поддерживает только шлюзы IPv4. Как упоминалось в комментариях ниже, единственный способ получить всю информацию до тех пор, пока .NET framework 4.5 не вызовет WMI.