用c#如何获取局域网内所有电脑的ip地址和mac地址

用c#如何获取局域网内所有电脑的ip地址和mac地址,第1张

下面的5行代码完成了从局域网中找出所有的机器

foreach(DirectoryEntry domain in rootChildren)

{

lb_pcNameItemsAdd("★★★"+domainName+"★★★");

foreach(DirectoryEntry pc in domainChildren)

{

if(pcName!="Schema")//Schema是结束标记

lb_pcNameItemsAdd(" "+pcName);

}

}

先贴一份别人的修改方法

一般MAC地址网卡中是固定的,当然也有网络高手会想办法去修改自己的MAC地址。修改自己的MAC地址有两种方法,一种是硬件修改,另外一种是软件修改。

硬件的方法就是直接对网卡进行 *** 作,修改保存在网卡的EPROM里面的MAC地址,通过网卡生产厂家提供的修改程序可以更改存储器里的地址。那么什么叫做EPROM呢?EPROM是电子学中一种存储器的专业术语,它是可擦写的,也就是说一张白纸你用钢笔写了一遍以后就不能再用橡皮擦去了,而EPROM这张白纸用铅笔写后可以再擦去,可以反复改变其中数据的存储器。

当然软件修改的方法就相对来说要简单得多了,在Windows中,网卡的MAC保存在注册表中,实际使用也是从注册表中提取的,所以只要修改注册表就可以改变MAC。Windows 9x中修改:打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\

Service\Class\Net\下的0000,0001,0002。

Windows 2000/XP中的修改:同样打开注册表编辑器,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\

Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到,就在0000下面添加字符串变量,命名为“NetworkAddress”,值为要设置的MAC地址,例如:000102030405

完成上述 *** 作后重启就好了。一般网卡发出的包的源MAC地址并不是网卡本身写上去的,而是应用程序提供的,只是在通常的实现中,应用程序先从网卡上得到MAC地址,每次发送的时候都用这个MAC作为源MAC而已,而注册表中的MAC地址是在Windows安装的时候从网卡中读入的,只要你的 *** 作系统不重新安装应该问题不大。

也就是说直接改硬件的mac地址C++是做不到的,不过可以修改注册表里的值,至于怎么用C++修改注册表相信你应该会做。

不过都过去快一年了不知道你搞没搞定……

一、MAC地址的用途

MAC地址在网卡中是固定的,每张网卡的MAC地址都不一样。网卡在制作过程中,厂家会在它的EPROM里面烧录上一组数字,这组数字,每张网卡都各不相同,这就是网卡的MAC(物理)地址。

由 于MAC地址的唯一性,因此它主要用来识别网络中用户的身份。例如ADSL上网时,电信用它来记费,确认是你上的网;在校园网中,MAC地址也可以用来识 别用户。对于校园网的正式用户,其MAC地址会登记在服务器端,假如你是非法用户,服务器中就没有你的网卡MAC地址,这样当试图连上网时,服务器就会 立刻认出你、阻止连上网络。

二、MAC地址是可以修改的

有些场合,例如冒充网络中的正式用户,就需要修改你的网卡MAC。要修改MAC地址,你可以通过硬件的方法实现,即利用网卡厂家提供的修改程序来烧录网卡的EEPROM,这样做虽然可行,但是风险很大、 *** 作也复杂,即使你很有经验,也难免在 *** 作中出现错误。

其 实完全没必要用烧录方法、修改网卡中的MAC地址。要知道Windows安装的时候,会自动从网卡中读入MAC地址,把它存放在注册表中以备后用。当数 据在网络中传输时,从网卡发出的数据包中要求有一个源MAC地址,这个MAC地址就是从注册表中读取的(并非从网卡中读取的),因此只要你修改了注册表中 的MAC地址,就相当于改了网卡EEPROM中的MAC地址,两者实际效果是完全相同的。

三、修改注册表中MAC的方法

1、使用软件修改

本方法适用于所有类型的网卡。在不同的Windows下,要用不同的软件修改MAC。

(1)Win2003/XP/2000

如果系统是Win2003/XP/2000,可以使用SMAC,这款软件并不能修改网卡中的MAC地址,只能修改注册表中的MAC。

该 软件有两种运行模式,如果你启用了“Windows Management Instrumentation (WMI)”服务,软件即运行在[WBEM ON]模式下,可以显示更多的网卡信息,否则运行在[WBEM OFF]模式下,在软件窗口标题栏可看到当前运行模式。

软件的使用非常简单,运行后点击“Refresh”,窗口中的列表框将显示网卡的类型、IP地址、Active MAC等,在下面六个输入框中输入指定的MAC地址,然后点击右侧的“Update MAC”,即可修改完成;最后重启电脑使修改值生效。

注意,试用版不能输入新的MAC地址,只能把MAC改成0C-0C-0C-0C-0C-01

2、在网卡属性中修改

如果网卡采用了RealTek公司的RTL8139芯片,就可以在网卡属性中修改MAC,这样注册表中的MAC地址也会一同改变,方法如下:

在 Win2003/XP/2000中,点击菜单“开始”/设置/控制面板,双击“系统”,点击“硬件”/设备管理器,在设备管理器中展开“网络适配器”,右 击要修改MAC地址的网卡,选择“属性”;点击“高级”选项卡,在“属性”下,选择点击Network Address项目,在右侧“值”的下方,输入要指定的MAC地址值(例如020202020202),注意要连续输入12个数字或字母(中间不要输入 -);重新启动电脑后,修改即可生效。至于Win98下的MAC修改方法,与以上方法类似。

如果修改之后,在Win2003/XP/2000 下,又想把注册表中的MAC地址恢复成原样,可以选择“Network Address”项,将右边的值选择为“不存在”,再重新启动即可;在Win98下是选择“没有显示”。

3、在注册表中修改

对于非RTL8139芯片的网卡,你可以直接修改注册表中的MAC,注意:修改注册表前,要先备份注册表。

Win2003/XP/2000

点 击“开始”/运行,输入regedit打开注册表,定位到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet /Control/Class/{4D36E972-E325-11CE-BFC1-08002BE10318}/0000、0001、0002等主键 下,查找DriverDesc的内容,了解网卡使用了哪个主键(例如0001),如果主键下有params项,则该主键也是网卡所使用的;

例 如网卡使用了0001主键,因此我们就选中它,在其右边建一个字符串项(名为NetworkAddress),双击该串,输入你指定的MAC地址值(注意 应该是12位的连续数字或字母,其间没有-号);在0001下的NDI/params中添加一项子键(名为NetworkAddress),选择该子键, 在其右边添加名为default的字符串,键值为修改后的MAC地址,与上面的数值相同;修改后重启生效。

四、MAC地址改

如果想知道系统中的MAC地址是否修改成功了,可以这样 *** 作:重启电脑,在命令提示符下,输入IPconfig/all命令,于是Physical Address右边就会显示一个地址,检查一下即可得知MAC是否修改成功了。

Sub 按钮1_Click()

GetMyIP

End Sub

Public Sub GetMyIP()

Dim strComputer As String

Dim objWMI As Object

Dim colIP As Object

Dim IP As Object

Dim i As Integer

Dim LANstr As String, IPstr As String, MACstr As String

strComputer = ""

Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colIP = objWMIExecQuery _

("Select from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each IP In colIP

  If Not IsNull(IPIPAddress) Then

      For i = LBound(IPIPAddress) To UBound(IPIPAddress)

          LANstr = IPDescription(i)  '网卡名称

          IPstr = IPIPAddress(i)     '网卡IP地址

          MACstr = IPMacAddress      '网卡的MAC地址

          MsgBox "网卡名称:" & LANstr & vbCrLf & "IP地址:" & IPstr & vbCrLf & "MAC地址:" & MACstr, vbInformation, LANstr

      Next

  End If

Next

End Sub

以上就是关于用c#如何获取局域网内所有电脑的ip地址和mac地址全部的内容,包括:用c#如何获取局域网内所有电脑的ip地址和mac地址、C++编程修改网卡的MAC地址、修改无线网卡Mac地址的原理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9497638.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存