Function ChangeIP(IP As String, NM As String, GW As String, MDNS As String, SDNS As String) As String
我們提供的服務有:做網站、成都網站建設、微信公眾號開發、網站優化、網站認證、茫崖ssl等。為上千企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的茫崖網站制作公司
Dim strComputer, objWMIService, colNetAdapters, strIPAddress, strSubnetMask
Dim strGateway, strGatewaymetric, strDNS, objNetAdapter, errEnable, errGateways, errDNS
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" strComputer "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array(IP) 'IP地址
strSubnetMask = Array(NM) '子網
strGateway = Array(GW) 'Gateways
strDNS = Array(MDNS, SDNS) 'MAIN DNS AND SECOND DNS
strGatewaymetric = Array(1)
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNS)
If errEnable = 0 And errGateways = 0 And errDNS = 0 Then
ChangeIP = "成功"
Else
If errEnable = 0 Then
ChangeIP = "IP地址和子網成功, "
Else
ChangeIP = "IP地址或子網置 X, "
End If
If errGateways = 0 Then
ChangeIP = ChangeIP "DEFAULT成功, "
Else
ChangeIP = ChangeIP "DEFAULT X, "
End If
If errDNS = 0 Then
ChangeIP = ChangeIP "DNS成功"
Else
ChangeIP = ChangeIP "DNS X"
End If
End If
Next
End Function
Private Sub Command1_Click()
MsgBox ChangeIP(Winsock1.LocalIP, "255.255.255.0", "192.168.2.10", "192.168.2.10", "192.168.2.1")
End Sub
Private Sub Command2_Click()
MsgBox ChangeIP(Winsock1.LocalIP, "255.255.255.0", "192.168.2.1", "192.168.2.1", "192.168.2.10")
End Sub
Private Sub Form_Load()
If Winsock1.Index = "192.168.2.1" Then
Label2.Caption = "電信"
Else
Label2.Caption = "鉄通"
End If
End Sub
參考一下吧 下班了 沒時間改了
我的是拿winsock找ip的
是可以實現的。修改注冊表實現,要重起后生效. 或者禁用網卡在重啟用,就可以.
程序代碼:
Option Explicit
Const REG_SZ As Long = 1
Const HKEY_LOCAL_MACHINE = H80000002
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
Dim aaa As String
Private Sub Command1_Click()
Dim hKey As Long, hKey1 As Long, hKey2 As Long, ret As Long, ret1 As Long, lenData As Long, typeData As Long
Dim Name As String, name1 As String, name2 As String, s As String, S1 As String
Dim idx As Integer
idx = 0
Name = String(256, Chr(0))
RegCreateKey HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Services\Class\NetTrans", hKey
Text1.Text = hKey
Do
ret = RegEnumKey(hKey, idx, Name, Len(Name))
If ret = 0 Then
aaa = Left(Name, InStr(Name, Chr(0)) - 1)
aaa = "System\CurrentControlSet\Services\Class\NetTrans\" aaa
ret = RegOpenKey(HKEY_LOCAL_MACHINE, aaa, hKey)
'獲得IP地址
If ret = 0 Then
name1 = "IPAddress"
name2 = "IPMask"
ret = RegQueryValueEx(hKey, name1, 0, typeData, ByVal vbNullString, lenData)
s = String(lenData, Chr(0))
RegQueryValueEx hKey, name1, 0, typeData, ByVal s, lenData
If s "" Then s = Left(s, InStr(s, Chr(0)) - 1)
'獲得子網掩碼
ret1 = RegQueryValueEx(hKey, name2, 0, typeData, ByVal vbNullString, lenData)
S1 = String(lenData, Chr(0))
RegQueryValueEx hKey, name2, 0, typeData, ByVal S1, lenData
If S1 "" Then S1 = Left(S1, InStr(S1, Chr(0)) - 1)
If Val(s) 0 Then
Text1.Text = s
Text2.Text = S1
Command2.Enabled = True
Exit Sub
End If
End If
idx = idx + 1
End If
Loop Until ret 0
End Sub
Private Sub Command2_Click()
Dim hKey As Long
If Text1.Text "" Then
RegCreateKey HKEY_LOCAL_MACHINE, aaa, hKey
' 修改IP地址
RegSetValueEx hKey, "IPAddress", 0, REG_SZ, ByVal Text1.Text, 13
' 修改子網掩碼
RegSetValueEx hKey, "IPMask", 0, REG_SZ, ByVal Text2.Text, 13
RegCloseKey hKey
End If
End Sub
建議你使用注冊表的API進行修改
封裝兩個NET函數給你
private?string?GetReg(string?RegPath)??取得注冊表項內容
{
string?str="";
RegistryKey?hkml?=?Registry.LocalMachine;?
RegistryKey?software?=?hkml.OpenSubKey("SOFTWARE",true);?
RegistryKey?aimdir?=?software.OpenSubKey("krabs",true);
if?(aimdir?!=?null)
{
if?(aimdir.GetValue(RegPath)?!=?null)
str?=?aimdir.GetValue(RegPath).ToString();
if?(str?!=?null)
return?str;
return?null;
}
return?null;
}
private?bool?SetReg(string?RegPath,string?Data)??//設置注冊表內容
{
RegistryKey?reg?=?Registry.LocalMachine;
RegistryKey?software?=?reg.OpenSubKey("SOFTWARE",?true);
RegistryKey?aimdir1?=?software.CreateSubKey("krabs");
if?(aimdir1?==?null)
return?false;
aimdir1.SetValue(RegPath,?Data);
return?true;
}
Dim th As Threading.Thread
2 Dim tcpl As System.Net.Sockets.TcpListener
3
4 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
5 th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))
6 th.Start()
7 End Sub
8
9 Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)
10 Try
11 If IP "" Then
12 Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)
13 Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream
14 Dim reqStream As New IO.StreamWriter(tcpStream)
15 reqStream.Write(SendMsg)
16 reqStream.Flush()
17 tcpStream.Close()
18 tcpc.Close()
19 End If
20 Catch ex As Exception
21 MsgBox(ex.Message.ToString)
22 End Try
23 End Sub
24 Private Sub MyListen()Sub MyListen()
25 Try
26 Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)
27 tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)
28 tcpl.Start()
29 While True
30 Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()
31 Dim MyBuffer(1024) As Byte
32 Dim i As Integer
33 i = s.Receive(MyBuffer)
34 If i 0 Then
35 Dim lstrRec As String
36 Dim j As Integer
37 For j = 0 To i - 1
38 TextBox1.Text += Chr(MyBuffer(j)) ","
39 Next
40 End If
41 End While
42 Catch ex As Exception
43 MsgBox(ex.Message.ToString)
44 End Try
45 End Sub
46
47 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
48 SendMessage("192.168.0.61", TextBox2.Text)
49 End Sub
做exe程序獲取本機IP地址用
System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList
做web程序獲取客戶端的IP地址用
HttpContext.Current.Request.ServerVariables("REMOTE_ADDR"])
你要問的是不是以上三項在注冊表中的位置,下面提供:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
項下有很多句柄你可以在里邊找到不同的本地連接對應的句柄,在程序里進行修改就可以了,如果找不到,可以先在本地連接屬性里修改tcp/ip協議的相應設置,然后到注冊表里查找相應的數據就可以定位該位置了!源碼這次就不給出了,就是修改注冊表,和容易,您可以使用vb自帶的函數,也可以使用wsh提供的腳本函數,當然也可以使用winAPI(比較復雜,要嚴格定義參數類型,即緩沖區,所以簡單的修改不建議使用)。
希望您的問題能盡快解決!
當前名稱:包含vb.net更改ip的詞條
文章位置:http://m.kartarina.com/article12/hddogc.html
成都網站建設公司_創新互聯,為您提供企業網站制作、外貿網站建設、商城網站、搜索引擎優化、云服務器、關鍵詞優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯