Я хочу создать утилиту, позволяющую конечным пользователям копировать данные с нашего сервера на их мобильное устройство, но хотел бы ограничить это для запуска для Wi -Fi и использования только кабеля Ethernet, то есть, если они используют 5G в полевых условиях, то утилита должна обнаружить это и не делать копию, есть ли у кого -нибудь идеи, если это выполнимо, используя классы .NET, например. System.net.networkinformation.networkInterface . Или с помощью сценария PowerShell? В идеале я хотел бы предотвратить копию через 5G, так как это может быть довольно дорого < /p>
private bool IsNetworkAvailable(long minimumSpeed)
{
// If not connected to the network, exit
if (!NetworkInterface.GetIsNetworkAvailable())
return false;
try
{
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
// discard because of standard reasons (aLLOW ON
if ((ni.OperationalStatus == OperationalStatus.Down) ||
(ni.NetworkInterfaceType == NetworkInterfaceType.Loopback) ||
(ni.NetworkInterfaceType == NetworkInterfaceType.Tunnel) ||
(ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
)
continue;
// this allow to filter modems, serial, etc.
if (ni.Speed < minimumSpeed)
continue;
// discard virtual cards (virtual box, virtual pc, etc.)
if ((ni.Description.IndexOf("virtual", StringComparison.OrdinalIgnoreCase) >= 0) ||
(ni.Name.IndexOf("virtual", StringComparison.OrdinalIgnoreCase) >= 0))
continue;
// discard "Microsoft Loopback Adapter", it will not show as NetworkInterfaceType.Loopback but as Ethernet Card.
if (ni.Description.Equals("Microsoft Loopback Adapter", StringComparison.OrdinalIgnoreCase))
continue;
nicID = ni.Id;
return true;
}
}
catch (System.Exception ex)
{
_log.WriteMessage("Error in getting network with min speed", "ERROR", ex);
}
return false;
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... connection