有些关于网络的小问题 内详:
我的中心思想是修改Mac地址,网络上可能有几种方案,但是我实践通过测试的就是我现在的方案(修改注册表)下面 详见注册表路径:
win10
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\CLASS\{4D36E972-E325-11CE-BFC1-08002BE10318}\008
win7
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\CLASS\{4D36E972-E325-11CE-BFC1-08002BE10318}\007
winxp
HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\CLASS\{4D36E972-E325-11CE-BFC1-08002BE10318}\001
现在看来,主路径 直到......0318这都是一样的,可是后面的 001 007008 都是什么鬼如何我才能写一个各种windows系统通用的代码
修改Mac地址的方法有两种:
一、通过网络适配器属性页面,找到网络地址选项,输入想要修改的Mac地址。
这种方法适用于有线网卡,但无线网卡通常没有网络地址选项。
二、通过注册表编辑器,定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\ {4D36E972-E325-11CE-BFC1-08002BE10318}\下的网卡编号(如0001、0003等),
新建字符串值或项,命名为NetworkAddress,内容为想要修改的Mac地址。这种方法适用于无线网卡。
你提到的001、007、008等都是网卡编号,它们代表不同的网络适配器。
你可以通过查看DriverDesc值来确定哪个编号对应哪个网卡。
如果你想了解更多细节,请参考以下链接:
1、https://www.zhihu.com/question/36405648
2、https://blog.csdn.net/qq_34843032/article/details/105208723 isdkz 发表于 2023-3-10 14:50
修改Mac地址的方法有两种:
一、通过网络适配器属性页面,找到网络地址选项,输入想要修改的Mac地址。
我电脑最多有10来个分支,那还需要进行遍历
然后看哪个是自己要的 isdkz 发表于 2023-3-10 14:50
修改Mac地址的方法有两种:
一、通过网络适配器属性页面,找到网络地址选项,输入想要修改的Mac地址。
刚才回复一个被后台给吃了,
查看DriverDesc的值,我们用肉眼可以判断这个网卡就是我们的主网卡,就是我们要找的东东
可是要是用程序来看的话,还是不知道咋回事 wp231957 发表于 2023-3-10 15:20
刚才回复一个被后台给吃了,
查看DriverDesc的值,我们用肉眼可以判断这个网卡就是我们的主网卡, ...
要找到网卡编号对应的网卡?
import winreg
# 打开注册表键
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}")
# 遍历所有子键
for i in range(winreg.QueryInfoKey(key)):
# 获取子键名称
subkey_name = winreg.EnumKey(key, i)
try:
# 打开子键
subkey = winreg.OpenKey(key, subkey_name)
# 尝试获取 DriverDesc 值
driver_desc = winreg.QueryValueEx(subkey, "DriverDesc")
# 打印子键名称和 DriverDesc 值
print(subkey_name, driver_desc)
except (FileNotFoundError, PermissionError):
# 如果没有 DriverDesc 值或拒绝访问,跳过
pass
# 关闭注册表键
winreg.CloseKey(key) isdkz 发表于 2023-3-10 15:39
要找到网卡编号对应的网卡?
可是咋能知道哪个描述是主网卡,还是要用肉眼?? 本帖最后由 isdkz 于 2023-3-10 18:44 编辑
wp231957 发表于 2023-3-10 15:52
可是咋能知道哪个描述是主网卡,还是要用肉眼??
可以配合 netifaces 这个库
import winreg
import netifaces
def_gw_device = netifaces.gateways()['default']
# 打开注册表键
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Class\\{4d36e972-e325-11ce-bfc1-08002be10318}")
# 遍历所有子键
for i in range(winreg.QueryInfoKey(key)):
# 获取子键名称
subkey_name = winreg.EnumKey(key, i)
try:
# 打开子键
subkey = winreg.OpenKey(key, subkey_name)
netCfgInstanceId = winreg.QueryValueEx(subkey, "NetCfgInstanceId")
driverDesc = winreg.QueryValueEx(subkey, "DriverDesc")
if netCfgInstanceId == def_gw_device:
print("当前在使用的网卡编号为:", subkey_name)
print("网卡名称:", driverDesc)
except (FileNotFoundError, PermissionError):
# 如果没有 DriverDesc 值或拒绝访问,跳过
pass
# 关闭注册表键
winreg.CloseKey(key) isdkz 发表于 2023-3-10 18:17
可以配合 netifaces 这个库
先结贴,完我再研究 wp231957 发表于 2023-3-10 18:40
先结贴,完我再研究
好的,我又在代码里加了一个打印网卡名称,你可以根据网卡名称来判断一下获取到的值对不对
页:
[1]