如何以编程方式更改IP地址?

Posted

技术标签:

【中文标题】如何以编程方式更改IP地址?【英文标题】:how to change ip address programmatically? 【发布时间】:2019-07-10 17:10:15 【问题描述】:

我想使用下面的代码以编程方式更改我的 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;
    

【问题讨论】:

您或用户将是唯一真正了解的人 【参考方案1】:

如果您想获得正确的接口名称,您应该从这里开始,阅读 Microsoft 文档中的文章:NetworkInterface Class 。 您可以从上面的站点实现一些代码 sn-ps 并在您的 SetIP 方法中选择正确的接口,而不是从方法参数中获取它。如果你需要在参数中获取它,它应该也很简单。您有很多属性可以识别您感兴趣的网络接口。

【讨论】:

以上是关于如何以编程方式更改IP地址?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式清除 WinInet DNS 缓存

干货|IP地址修改器如何更改IP

如何在 30 秒内自动更改 IP 地址?

如何在同一(但正在更改)IP 地址上处理 2 个不同主机的 ssh 主机密钥验证? [关闭]

如何更改电脑IP地址图文教程

如何找到谷歌的IP地址?