我得到一个带有 GetBestInterface (iphlpapi.dll) 的 InterfaceIndex。
目标:读取其他接口属性。
这个 WMI 查询很慢:
SELECT MACAddress,Name,GUID,NetConnectionID FROM Win32_NetworkAdapter WHERE InterfaceIndex=
在 C# 中,更快,
NetworkInterface.GetAllNetworkInterfaces()
但每个 NetworkInterface 都没有属性 InterfaceIndex (原文如此!)。
我不知道如何优化这个:
EnumerationOptions wmi_options = new EnumerationOptions();
wmi_options.Rewindable = false;
wmi_options.ReturnImmediately = true;
string wql = "SELECT MACAddress,Name,GUID,NetConnectionID FROM Win32_NetworkAdapter WHERE InterfaceIndex=" + iface;
ManagementObjectCollection recordset = new ManagementObjectSearcher(@"root\cimv2", wql, wmi_options).Get();
foreach (ManagementObject mo in recordset)
这些选项似乎没有帮助。我可以拆分操作并缓存任何步骤吗?
或者其他路径:避免 WMI 并从注册表中查找接口(使用 InterfaceIndex)?
HKLM\SYSTEM\CurrentControlSet\Services\tcpip\Parameters\Interfaces
HKLM\SYSTEM\CurrentControlSet\Control\Network{4D36E972-E325-11CE-BFC1-08002BE10318}