1、设置有线网络是否可用
首先需要通过硬件ID或其他途径获得网络适配器:
//如果没有有线网络适配器
if (_ethAdapter == null)
{
//从硬件ID得到有线网络适配器
var adapters = NetworkUtil.GetNetworkAdapterByHardwareId(EthHardwareId);
if (adapters.Count == 1)
{
_ethAdapter = adapters[0];
}
else if (adapters.Count > 1)
{
_ethAdapter = adapters.FirstOrDefault(adapter => adapter.IsNetEnabled) ?? adapters[0];
}
}
else
{
_ethAdapter = NetworkUtil.GetNetworkAdapterByName(_ethAdapter.Name);
}
进而能够得到需要配置的网络适配器名称:
adapterName=_ethAdapter.Name
得到需要配置的网络适配器名称后即可用下面的函数对其进行配置
public static void NetworkUtility(string adapterName, bool isEnable)
{
Stopwatch stopwatch = Stopwatch.StartNew();
try
{
Process p = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "netsh",
Arguments = $" interface set interface \"{adapterName}\" {(isEnable ? "enable" : "disable")}",
UseShellExecute = true,
WindowStyle = ProcessWindowStyle.Minimized,
Verb = "runas"
}
};
p.Start();
p.WaitForExit();
}
catch (Exception ex)
{
Log.Error($"有线网络设置失败:{ex.Message}");
}
finally
{
stopwatch.Stop();
Log.Info($"设置有线网络所用时间:{stopwatch.ElapsedMilliseconds}");
}
}
参数:adapterName是需要配置的网络适配器名称,isEnable是决定开启该网络适配器还是关闭该网络适配器
以上代码是通过调用管理员权限执行命令行从而对网络进行设置,由于是需要执行cmd,所以此处的UseShellExecute属性必须设为true,Verb = "runas"是为了保证以管理员权限运行此命令。
在你的项目中你当然不想用户进行什么操作后突然