私は 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