• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Lấy địa chỉ IP và Subnet Mask

Các thủ thuật về hệ thống, thư mục, tập tin và mạng
User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Sun 19/10/2008 4:33 am

Thủ thuật: Lấy địa chỉ IP và Subnet Mask
Tác giả: truongphu
Mô tả: Lấy địa chỉ DefaultIPGateway, IP và Subnet Mask của máy


Code: Select all

  1. Private Sub Form_Load()
  2. Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
  3. Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
  4.  
  5. For Each IPConfig In IPConfigSet
  6.     If Not IsNull(IPConfig.IPAddress) Then
  7.         For i = LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
  8.             MsgBox "DefaultIPGateway: " & IPConfig.DefaultIPGateway(i) & vbCr & "IPAdress: " & IPConfig.IPAddress(i) & vbCr & "IPSubnet: " & IPConfig.IPSubnet(i)
  9.         Next
  10.     End If
  11. Next
  12. End Sub


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Tue 21/10/2008 2:11 pm

Windows còn cung cấp trình ipconfig có chức năng tương đương. Gõ ipconfig trong Cmd sẽ có nhanh kết quả
Attachments
untitled.JPG
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Tue 21/10/2008 2:29 pm

Hoặc đơn giản:

Code: Select all

  1. MsgBox Winsock1.LocalIp
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
FVS
Thành viên tích cực
Thành viên tích cực
Posts: 178
Joined: Tue 13/05/2008 10:38 am

Re: Lấy địa chỉ IP và Subnet Mask

Postby FVS » Tue 21/10/2008 2:38 pm

Sao nhà cháu, vào run để chạy IPConfig--> hiện ra được cửa sổ app 16 bit khoảng mấy giây rồi biến mất là sao ạ?
Nhật kí giải thuật - FVS:

Http://GiaiThuat.WordPress.Com

User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Wed 29/10/2008 8:50 pm

Yêu VB6 chính thống, bạn có thể tham khảo:
Lấy địa chỉ IP, phanthequang4101987
http://www.caulacbovb.com/forum/viewtopic.php?t=3896#p23925
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
ngochoan2006
Guru
Guru
Posts: 184
Joined: Wed 25/10/2006 4:35 pm
Location: Phúc Yên - Vĩnh Phúc !
Been thanked: 1 time

Re: Lấy địa chỉ IP và Subnet Mask

Postby ngochoan2006 » Sun 16/11/2008 10:58 am

Nhân tiện đây bạn cho mình hỏi câu này với !
Có cách nào để change cái địa chỉ IP đó thành địa chỉ khác được không vậy ?
Kiến thức là vô hạn!
Hiểu biết của tui thì có hạn !
Nên dừng có ngạc nhiên khi tôi không biết 1+2 =? !

User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Sun 16/11/2008 12:13 pm

He! hơi bị khó... nhưng mò cũng ra :D

Code: Select all

  1. Private Sub Form_Load()
  2. Set colNetAdapters = GetObject("winmgmts:").ExecQuery _
  3.     ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
  4.  
  5. strIPAddress = Array("10.0.0.15") ' <-- Thay Ðôi
  6. strSubnetMask = Array("255.0.0.0") ' <-- Thay Ðôi
  7. strGateway = Array("10.0.0.2") ' <-- Thay Ðôi
  8. strGatewaymetric = Array(1)
  9.  
  10. For Each objNetAdapter In colNetAdapters
  11.     errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
  12.     errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
  13. Next
  14. MsgBox "Ðã Thay Ðôi Ðia chi IP"
  15. a = Shell("Cmd /K " & "ipconfig", 1) ' <-- Kiêm Tra Thay Ðôi
  16. End
  17. End Sub

Ghi chú: Dòng code 2 y choang các dòng code ở bài 1 nhưng viết lại cho gọn (học TTD)
WMI muôn năm!!
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
ngochoan2006
Guru
Guru
Posts: 184
Joined: Wed 25/10/2006 4:35 pm
Location: Phúc Yên - Vĩnh Phúc !
Been thanked: 1 time

Re: Lấy địa chỉ IP và Subnet Mask

Postby ngochoan2006 » Sun 16/11/2008 10:06 pm

OK !
Nếu dùng code trên của bạn cũng có khả năng thay đổi lại Ip của Card đó, tuy nhiên sau khi thay đổi song nó trở thành dạng " Manually config..." mất rùi mà đã là manually thì hơi khó sài !
Yêu cầu cao hơn :
+ Thay đổi được địa chỉ IP trong chương trình với điều kiện là IP nhập từ bàn phím hoặc chọn trong Listbox ( Combo box ).
+ Sau khi thay đổi song thì IP của Network phải là ở dạng Auto ( Assigned by DHCP )


Làm được vậy thì quá Pro luôn, Cái này mình đang nghiên cứu và cũng hơi chuối với nó :((
Mong bác tiếp tục phát huy !
Kiến thức là vô hạn!
Hiểu biết của tui thì có hạn !
Nên dừng có ngạc nhiên khi tôi không biết 1+2 =? !

User avatar
ngochoan2006
Guru
Guru
Posts: 184
Joined: Wed 25/10/2006 4:35 pm
Location: Phúc Yên - Vĩnh Phúc !
Been thanked: 1 time

Re: Lấy địa chỉ IP và Subnet Mask

Postby ngochoan2006 » Sun 16/11/2008 10:13 pm

Vấn đề ở đây tôi đang châm cứu là làm sao có thể thay đổi IP của một máy mà không phải là dạng Manual. Tiếp đến là lấy được danh sách các địa chỉ IP đúng theo qui định đặt IP của hệ thống ( Địa chỉ IP hợp lý )
Tham khảo thêm phần mềm viết bằng VB có khả năng đó tại Đây này
Trích nguyên lý làm việc của nó nhé :

Code: Select all

  1. This software just writes a value into the windows registry. When the Network Adapter Device is enabled, windows searches for the registry value 'NetworkAddress' in the key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1- 08002bE10318}\[ID of NIC e.g. 0001]. If a value is present, windows will use it as MAC address, if not, windows will use the hard coded manufacturer provided MAC address. Simple? Some Network Adapter drivers have this facility built-in. It can be found in the Advance settings tab in the Network Adapter's Device properties in Windows Device Manager.

Dùng thằng Gú gồ tran la te thì như sau :

Code: Select all

  1. Phần mềm này chỉ cần viết một giá trị vào trong cửa sổ đăng ký. Khi các thiết bị mạng Adapter được kích hoạt, cửa sổ tìm kiếm cho đăng ký giá trị 'NetworkAddress' trong khoá HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Class \ (4D36E972-E325-11CE-BFC1-08002bE10318) \ [ID của Card mạng ví dụ: 0001]. Nếu một giá trị là hiện nay, cửa sổ sẽ sử dụng nó như địa chỉ MAC, nếu không, cửa sổ sẽ sử dụng mã cứng nhà sản xuất cung cấp địa chỉ MAC. Đơn giản? Một số mạng Adapter trình điều khiển này có cơ sở xây dựng-trong. Nó có thể được tìm thấy trong nâng cao cài đặt trong các thẻ mạng Adapter của thiết bị tính trong Windows Device Manager.

( He he kể ra có thằng Gú gồ này cũng tiện ghê nhỉ !!! :P
Kiến thức là vô hạn!
Hiểu biết của tui thì có hạn !
Nên dừng có ngạc nhiên khi tôi không biết 1+2 =? !

User avatar
truongphu
VIP
VIP
Posts: 4765
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby truongphu » Mon 17/11/2008 8:48 am

1- Tôi vào nhánh HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\... nhưng chẳng thấy gì!
- Có vô số cấu hình phần cứng với {4D36E972-E325-11CE-BFC1- 08002bE10318}
- trong đó có nhánh Network adapters, bung ra có đến ... 9 thiết bị mạng 1 Đâu mà lắm thế?
Mời xem hình
untitled0.JPG

2- Tôi tìm nhánh

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{1CD45787-B794-487F-AC99-414A4479C570} thì khá hơn: Đủ thông tin về DefaultGateway, IPAddress, SubNetMask.
Lưu ý: vì máy tôi yếu nên tôi đã Disable DHCP; EnableDHCP = 0 và IPAuto... = 0
Với Modem CNet, tôi đã tự khai: DefaultGateway là địa chỉ IP bắt buộc của Modem = 10.0.0.2
SubNetMask đơn giản là 255.0.0.0
và IPAddress là con của IP Modem = 10.0.0.15
Riêng DNS Server tôi chọn Open DNS (quảng cáo dữ lắm) là 208.67.222.222 và phụ là 208.67.220.220
Mời xem hình
untitled.JPG


3- Trở lại với ngochoan2006 yêu cầu đổi IPAddress Auto (nghĩa là các phần khác Windows tự làm)
(tham khảo: http://tmac.technitium.com/tmac/index.html)
- Windows sẽ dò và như đã nói trên, bắt buộc khai DefaultGateway là địa chỉ IP mặc định của Modem
- DNS Server cũng là địa chỉ của Modem!
- Vậy thì chỉ còn IPAddress là tự động thay đổi. SubNetMask không quan trọng lắm, có thể để trị mặc định của Modem
Tôi xin nói về Modem CNet vì tôi chỉ biết nhiêu đó:
10.0.0.2 là địa chỉ CNet nối qua card LAN
10.0.0.3 là địa chỉ CNet nối qua USB, phải cài driver
từ 10.0.0.4 đến 10.0.0.16 thì Modem CNet hổ trợ cho Windows tự dò tìm và tự động khai, nghĩa là trong mạng LAN cùng dùng một modem CNet: Chỉ có thể tự động với 13 máy!
Từ máy thứ 14 trở đi, nếu để windows phục vụ, sẽ có máy không vào Internet được...
Do đó đa số các máy phải khai bằng tay từ số 10.0.0.17 trở lên thì OK

4- Như thế thì trên một máy có IPAddress auto, ta chẳng biết các thông số về DefaultGateway, IPAddress, SubNetMask...
Không sao! Với code của bài "Lấy địa chỉ IP và Subnet Mask" là êm
Và bạn ngochoan2006 yêu cầu thay IPAddress Auto thì bạn chỉ cần thay phần IPAddress, các phần khác: bỏ
và tôi đoan chắc với Technitium MAC Address Changer Version: 5.0 Programmer: Shreyas Zare thì khi bạn nhấn RenewIP thì các thông số trên giao diện vẫn giữ nguyên, chỉ có IPAddress cọng trừ số đuôi chút chút thành... vd 192.168.100.15
Xong ! :D
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
ngochoan2006
Guru
Guru
Posts: 184
Joined: Wed 25/10/2006 4:35 pm
Location: Phúc Yên - Vĩnh Phúc !
Been thanked: 1 time

Re: Lấy địa chỉ IP và Subnet Mask

Postby ngochoan2006 » Mon 17/11/2008 9:04 am

Chính xác là tôi đang cần thay địa chỉ IP của nó mà thôi, không quan tâm đến Gateway vì thằng này khi IP đã Auto thì nó sẽ tự nhận giá trị của mạng hoặc của Model phân phát.
Vấn đề muốn giải quyết là :
+ Trong mạng nội bộ ( Lan ) tôi dùng phần mềm ( hoặc qua Modem ) chặn các IP không được phép vào Net ( ví dụ dải Ip từ 192.168.1.1 ~ 192.168.1.10 ) và từ đó các máy có địa chỉ IP này không thể vào Net được. Nhưng nếu thay đổi địa chỉ IP của các máy trong giải kia thì vào OK với điều kiện là Auto.
Nếu mình set nó Manual thì sẽ trùng với các IP của máy khác, mà ngồi mò làm sao để không trùng thì lâu lém .
Vì thế tôi mới cần thay địa chỉ IP của máy tính làm sao để Auto mới được.
Chức năng RenewIP mà bạn nói trên thực chất là chỉ sử dụng câu lệnh :
IPCONFIG / Renew mà thôi. Không có j đáng bàn. Bạn để ý chức năng change IP đó. Nó liệt kê cho mình 1 danh sách các địa chỉ IP hợp pháp mà windows chấp nhận là tự động đó.
Châm cứu đi nhé !
Kiến thức là vô hạn!
Hiểu biết của tui thì có hạn !
Nên dừng có ngạc nhiên khi tôi không biết 1+2 =? !

User avatar
Fr0z3n
Thành viên năng nổ
Thành viên năng nổ
Posts: 51
Joined: Wed 30/04/2008 7:15 am
Contact:

Re: Lấy địa chỉ IP và Subnet Mask

Postby Fr0z3n » Wed 19/11/2008 10:22 am

các bác ơi thế có cách nào có thể lấy được địa chỉ IP Address của mạng ko, cái mà ta nhìn thấy đc ở trên whatismyip.com ấy. em đang cần cái này cho cái chatbox của em, có cách nào thì chỉ cho em nhé, thanks các bác

User avatar
ngochoan2006
Guru
Guru
Posts: 184
Joined: Wed 25/10/2006 4:35 pm
Location: Phúc Yên - Vĩnh Phúc !
Been thanked: 1 time

Re: Lấy địa chỉ IP và Subnet Mask

Postby ngochoan2006 » Mon 24/11/2008 8:58 pm

Thêm 1 phần mềm nữa viết bằng VB có tính năng tương tự này.
Vào đây để tham khảo
Kiến thức là vô hạn!
Hiểu biết của tui thì có hạn !
Nên dừng có ngạc nhiên khi tôi không biết 1+2 =? !

qhhqnavy
Thành viên tích cực
Thành viên tích cực
Posts: 102
Joined: Sat 26/02/2011 10:45 am
Location: Hải Phòng City

Re: Lấy địa chỉ IP và Subnet Mask

Postby qhhqnavy » Sat 19/03/2011 10:16 pm

em dùng VB2010 thì Lấy địa chỉ IP và Subnet Mask làm sao đây bác truongphu?
cám ơn bác nhiều

User avatar
tdc
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 413
Joined: Sun 10/07/2011 2:38 pm
Location: TP.NAM ĐỊNH
Has thanked: 20 times
Been thanked: 20 times

Re: Lấy địa chỉ IP và Subnet Mask

Postby tdc » Tue 06/03/2012 8:32 am

em muốn lấy và hiển thị cả địa chỉ DNS server thì code thế nào ạ. em dựa trên code trên của các bác để làm nhưng mà không ra.


Return to “[VB] Hệ thống - Tập tin - Thư mục và Mạng”

Who is online

Users browsing this forum: No registered users and 0 guests