1

私は VB.Net で Windows フォーム アプリを作成しています。これは (とりわけ) IP アドレス、デフォルト ゲートウェイ、サブネット マスクを変更し、Windows 7 のみのイメージで IP アドレスを静的に設定します。Sysprep は使用されていません。Googleで検索しましたが、2つのオプションしか思いつきません。接続の名前を必ずしも知らないため、最初の解決策がうまくいくとは思いません。netsh を使用して IP 設定を変更します。この例へのリンクを提供するつもりでしたが、2 つ以上のリンクを投稿することはできません...

2 番目のソリューションはこのリンク (VB.Net バージョン)に示され、元のコードはここ (C# バージョン) にあります。このソリューションは、私があまり知らない 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
4

1 に答える 1

0

私は自分の質問に答えることができます。私はシャワーでそれを考えました(どのように決まり文句ですか?)。これは Windows 7 なので、右クリックしてプログラムを管理者として実行するだけで済みました。

于 2013-02-09T04:51:51.060 に答える