C#/.NET を使用してネットワーク接続をリセットする最良の方法は何ですか?
私の会社には、さまざまな手段 (3G、wifi、イーサネット ケーブル) で接続する顧客がいるいくつかのマシンがあり、時々 (特に 3G を使用する場合)、接続していないときにまだ接続していると Windows に報告しています。接続が本当にライブかどうかを確認する方法はありますが、リセットするのに苦労しています。ここに 1 つの問題があります。
var searcher = new ManagementObjectSearcher("select * from Win32_NetworkAdapter");
var managementObject = searcher.Get();
foreach (ManagementObject obj in managementObject)
{
var name = obj.Properties["Name"].Value.ToString();
Console.WriteLine(name);
obj.InvokeMethod("Disable", null);
obj.InvokeMethod("Enable", null);
}
ご覧のとおり、これはすべてのネットワーク アダプターを経由してリセットされますが、これはやりたくありません。さらに、一部のアダプターは null パラメーターを受け入れません。
これで、必要な NetworkInterface オブジェクトを取得できます。
var interfaces = NetworkInterface.GetAllNetworkInterfaces().Where(ni => ni.IsReceiveOnly == false &&
ni.OperationalStatus == OperationalStatus.Up && ni.NetworkInterfaceType != NetworkInterfaceType.Loopback);
しかし、NetworkInterface クラスには Start()、Stop()、Reset() などのメソッドがないようです。ここからどこへ行けばいいですか?