Ändern der IP-Adresse in VB.Net

Schreibe ich eine Windows Forms-Anwendung in VB.Net das wird (unter anderem) ändern Sie die IP-Adresse, Standard-Gateway, die Subnetzmaske und die IP-Adresse Statisch auf ein Bild von Winfows 7 nur. Sysprep wird nicht verwendet. Ich habe bei Google eine Suche und kommen nur mit 2 Optionen. Ich glaube nicht, dass die erste Lösung funktioniert für mich, weil ich nicht unbedingt wissen, die Namen der Verbindung. Es verwendet netsh IP-Einstellungen ändern. Ich werde einen link zu diesem Beispiel, aber ich kann nicht nach mehr als 2 links...

Die zweite Lösung ist in diesem link (der VB.Net version) und der ursprüngliche code ist hier (die C# - version). Diese Lösung nutzt WMI, die ich wirklich nicht viel Ahnung.

Wenn ich Debuggen Sie den code, und blickt auf alles mit dem code zu sein scheint ordnungsgemäß ausgeführt, aber die IP-Adresse ist immer noch auf DHCP und alle anderen Einstellung sind immer noch die gleichen. Also, im Grunde, was gibt? Warum funktioniert dieser code scheint nicht zu funktionieren.

Hier ist mein code. Ich habe nur ein paar änderungen vorgenommen:

    '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
  • hier der link, dass ich nicht in den obigen post.
  • Ich kann die Antwort auf meine eigene Frage...in 7 Stunden.
  • Ignorieren Sie nicht den return Wert von InvokeMethod(), es wird ein Fehler-code aus, wenn die Methode fehlgeschlagen ist.
  • Nicht die Try...Catch...End Try-catch der Fehler code von InvokeMethod?
InformationsquelleAutor Thomas927 | 2013-02-08
Schreibe einen Kommentar