我正在尝试将 winpcap 用于生产线上多台服务器上的应用程序。到目前为止,有一件事让我很恼火,那就是 Windows 7 设备命名约定,它是一个很长的十六进制字符串,并且因服务器而异(即\Device\NPF_{6F2E340D-FD43-4505-81C2-735716D02F15}
Linux 只需使用 eth0、eth1、... 约定即可简化此过程)。由于每台服务器将使用 5 个网络适配器,因此我不想保留包含设备名称的配置文件,也不想更改源代码以适应设备名称更改。此外,cat5 连接将连接到不同网络上的不同设备,并且每个图纸的端口分配应始终保持不变。
所以我的问题是,在 Windows 下是否有一些简单的方法来管理这些设备名称,例如能够在注册表中以某种方式轻松重命名它们?当我查看注册表时,十六进制字符串显示在许多条目中,也显示在文件夹名称中,所以我不确定更改是否会很麻烦。或者,是否有一种方法可以使用 winpcap 获取可以通过网络连接页面设置的设备的友好名称,并以此方式获取十六进制设备名称结果(类似于 findalldev_ex())。也欢迎任何其他建议。
PS:我知道我可以使用 bind() 绑定到 ip 和端口或者使用 winsock 等,但由于多个网络适配器需要具有相同的 IP 地址并且这在 Windows 中发生冲突,因此应用程序和硬件与其他设备的接口很复杂,因此混杂模式下的 winpcap 选项会创建所有原始消息。
答案1
如何获取网络连接的“连接名称”?
在 Windows 上getmac
可用于检索“连接名称”(友好名称)和“传输名称”(GUID)。
getmac /fo csv /v
示例输出:
"Connection Name","Network Adapter","Physical Address","Transport Name"
"Local Area Connection","Realtek PCIe GBE Family Controller","F0-BF-97-62-95-5D","\Device\Tcpip_{45B9E87F-83FB-4829-A751-6B62656CC1A8}"
"Wireless Network Connection","Atheros AR9285 Wireless Network Adapter","CC-AF-78-B2-4C-09","\Device\Tcpip_{B108BB0B-CCDC-4ACA-9DFE-5A2F17BC138D}"
"Bluetooth Network Connection","Bluetooth Device (Personal Area Network)","CC-AF-78-B2-4C-0A","Media disconnected"
如何重命名连接?
netsh
可用于重命名网络连接。
netsh interface set interface name="Local Area Connection" newname="New Name"
我怎样才能使这一切自动化?
您可以在安装产品时在批处理文件中使用上述命令来自动创建自定义本地配置文件。
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 盖特马克- 显示每台计算机(本地或网络)中所有网卡的媒体访问控制 (MAC) 地址和与每个地址关联的网络协议列表。
- 网络管理员- 配置网络接口、Windows 防火墙、路由和远程访问。