在VB.Net中更改IP地址

时间:2013-02-08 16:53:07

标签: vb.net ip wmi ip-address

我正在VB.Net中编写一个Windows窗体应用程序,它将(除其他外)更改IP地址,默认网关,子网掩码,并仅在Winfows 7的图像上将IP地址设置为静态。 Sysprep没有被使用。我搜索了谷歌,只提出了两个选项。我不相信第一个解决方案对我有用,因为我不一定知道连接的名称。它使用netsh来更改IP设置。我打算给这个例子一个链接,但我不能发布超过2个链接...

第二个解决方案显示在this link (the VB.Net version),原始代码为here (the C# version)。这个解决方案使用的WMI我真的不太了解。

当我调试代码并查看代码似乎正在执行的所有内容但IP地址仍然设置为DHCP并且所有其他设置仍然相同。那么,基本上,是什么给出的?为什么这段代码看起来不起作用?

这是我的代码。我只做了一些改动:

    'Changed the 3 IPs below
    Dim IPAddress As String = "192.168.1.105"
    Dim SubnetMask As String = "255.255.252.0"
    Dim Gateway As String = "192.168.1.100"

    Dim objMC As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
    Dim objMOC As ManagementObjectCollection = objMC.GetInstances()

    For Each objMO As ManagementObject In objMOC
        If (Not CBool(objMO("IPEnabled"))) Then
            Continue For
        End If

        Try
            Dim objNewIP As ManagementBaseObject = Nothing
            Dim objSetIP As ManagementBaseObject = Nothing
            Dim objNewGate As ManagementBaseObject = Nothing

            objNewIP = objMO.GetMethodParameters("EnableStatic")
            objNewGate = objMO.GetMethodParameters("SetGateways")

            'Set DefaultGateway
            objNewGate("DefaultIPGateway") = New String() {Gateway}
            objNewGate("GatewayCostMetric") = New Integer() {1}

            'Set IPAddress and Subnet Mask
            objNewIP("IPAddress") = New String() {IPAddress}
            objNewIP("SubnetMask") = New String() {SubnetMask}

            objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, Nothing)
            objSetIP = objMO.InvokeMethod("SetGateways", objNewGate, Nothing)

            'Changed this line so I could see if it was executing all of the way
            MessageBox.Show("Updated IPAddress, SubnetMask and Default Gateway!")

        Catch ex As Exception
            MessageBox.Show("Unable to Set IP : " & ex.Message)
        End Try
    Next objMO

1 个答案:

答案 0 :(得分:0)

我可以回答我自己的问题。我在洗澡时想到了它(陈词滥调怎么样?)。因为这是Windows 7,所以我只需右键单击并以管理员身份运行程序。