GetBestInterface (iphlpapi.dll) で InterfaceIndex を取得します。
目標: 他のインターフェイス プロパティを読み取ります。
この WMI クエリは遅いです:
SELECT MACAddress,Name,GUID,NetConnectionID FROM Win32_NetworkAdapter WHERE InterfaceIndex=
C# では、より速く、
NetworkInterface.GetAllNetworkInterfaces()
ただし、各 NetworkInterface にはプロパティ InterfaceIndex がありません ( sic ! )。
これを最適化する方法がわかりません:
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}