Function ChangeIP(IP As String, NM As String, GW As String, MDNS As String, SDNS As String) As String
我們提供的服務有:做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、茫崖ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的茫崖網(wǎng)站制作公司
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) '子網(wǎng)
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地址和子網(wǎng)成功, "
Else
ChangeIP = "IP地址或子網(wǎng)置 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的
是可以實現(xiàn)的。修改注冊表實現(xiàn),要重起后生效. 或者禁用網(wǎng)卡在重啟用,就可以.
程序代碼:
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)
'獲得子網(wǎng)掩碼
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
' 修改子網(wǎng)掩碼
RegSetValueEx hKey, "IPMask", 0, REG_SZ, ByVal Text2.Text, 13
RegCloseKey hKey
End If
End Sub
建議你使用注冊表的API進行修改
封裝兩個NET函數(shù)給你
private?string?GetReg(string?RegPath)??取得注冊表項內(nèi)容
{
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)??//設(shè)置注冊表內(nèi)容
{
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協(xié)議的相應設(shè)置,然后到注冊表里查找相應的數(shù)據(jù)就可以定位該位置了!源碼這次就不給出了,就是修改注冊表,和容易,您可以使用vb自帶的函數(shù),也可以使用wsh提供的腳本函數(shù),當然也可以使用winAPI(比較復雜,要嚴格定義參數(shù)類型,即緩沖區(qū),所以簡單的修改不建議使用)。
希望您的問題能盡快解決!