c# - 如何以编程方式更改IP地址?
问题描述
我想使用下面的代码以编程方式更改我的 IP 地址,但我不知道 networkInterfaceName 的名称(作为参数)。我怎样才能得到它?无论如何,networkInterfaceName 代表什么?
public bool SetIP(string networkInterfaceName, string ipAddress, string subnetMask, string gateway = null)
{
var networkInterface = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault(nw => nw.Name == networkInterfaceName);
var ipProperties = networkInterface.GetIPProperties();
var ipInfo = ipProperties.UnicastAddresses.FirstOrDefault(ip => ip.Address.AddressFamily == AddressFamily.InterNetwork);
var currentIPaddress = ipInfo.Address.ToString();
var currentSubnetMask = ipInfo.IPv4Mask.ToString();
var isDHCPenabled = ipProperties.GetIPv4Properties().IsDhcpEnabled;
if (!isDHCPenabled && currentIPaddress == ipAddress && currentSubnetMask == subnetMask)
return true; // no change necessary
var process = new Process
{
StartInfo = new ProcessStartInfo("netsh", $"interface ip set address \"{networkInterfaceName}\" static {ipAddress} {subnetMask}" + (string.IsNullOrWhiteSpace(gateway) ? "" : $"{gateway} 1")) { Verb = "runas" }
};
process.Start();
var successful = process.ExitCode == 0;
process.Dispose();
return successful;
}
解决方案
如果您想获得正确的接口名称,您应该从这里开始,阅读 Microsoft 文档中的文章:NetworkInterface Class。您可以从上面的站点实现一些代码片段,并在您的SetIP
方法中选择适当的接口,而不是从方法参数中获取它。如果你需要在参数中获取它,它应该也很简单。您有很多属性来识别您感兴趣的网络接口。
推荐阅读
- selenium - 如何单击网站中的下载按钮并在python中下载xlsx
- python - 扩展生成的 TestApp 以验证 pyqt5 按钮单击
- python - python中有没有更好的方法来比较不同列表中的字典?
- ipython - Ipython 和 PIL 库函数不起作用
- tensorflow - 将 tf.dataset 转换为 PyTorch 数据集?
- flutter - Flutter 中的 Widget 生命周期是如何工作的?
- python - Django:有没有办法在 ManyToManyField 中手动排序对象?
- flutter - flutter Column Childs完全居中
- html - django 消息警报退出按钮不起作用
- java - 如何通过在休眠中使用 session.get 检索数据来跳过空值