- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我使用 netifaces
模块。
import netifaces
print netifaces.interfaces()
但这显示了下面的结果:
['{CDC97813-CC28-4260-BA1E-F0CE3081DEC7}',
'{846EE342-7039-11DE-9D20-806E6F6E6963}',
'{A51BA5F0-738B-4405-975F-44E67383513F}',
'{A646FA85-2EC6-4E57-996E-96E1B1C5CD59}',
'{B5DC7787-26DC-4540-8424-A1D5598DC175}']
我想在 Windows 中获得一个“友好”的接口(interface)名称,如“本地连接”。
我怎样才能得到它?
最佳答案
看起来 netifaces
让我们将信息从 Windows 注册表中提取出来。以下函数适用于 Windows 8.1 上的 Python 3.4。
获取连接名称...
import netifaces as ni
import winreg as wr
from pprint import pprint
def get_connection_name_from_guid(iface_guids):
iface_names = ['(unknown)' for i in range(len(iface_guids))]
reg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
reg_key = wr.OpenKey(reg, r'SYSTEM\CurrentControlSet\Control\Network\{4d36e972-e325-11ce-bfc1-08002be10318}')
for i in range(len(iface_guids)):
try:
reg_subkey = wr.OpenKey(reg_key, iface_guids[i] + r'\Connection')
iface_names[i] = wr.QueryValueEx(reg_subkey, 'Name')[0]
except FileNotFoundError:
pass
return iface_names
x = ni.interfaces()
pprint(get_connection_name_from_guid(x))
.. 在我的机器上生成:
['Local Area Connection* 12',
'Bluetooth Network Connection',
'Wi-Fi',
'Ethernet',
'VirtualBox Host-Only Network',
'(unknown)',
'isatap.{4E4150B0-643B-42EA-AEEA-A14FBD6B1844}',
'isatap.{BB05D283-4CBF-4514-B76C-7B7EBB2FC85B}']
获取驱动程序名称...
import netifaces as ni
import winreg as wr
from pprint import pprint
def get_driver_name_from_guid(iface_guids):
iface_names = ['(unknown)' for i in range(len(iface_guids))]
reg = wr.ConnectRegistry(None, wr.HKEY_LOCAL_MACHINE)
reg_key = wr.OpenKey(reg, r'SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}')
for i in range(wr.QueryInfoKey(reg_key)[0]):
subkey_name = wr.EnumKey(reg_key, i)
try:
reg_subkey = wr.OpenKey(reg_key, subkey_name)
guid = wr.QueryValueEx(reg_subkey, 'NetCfgInstanceId')[0]
try:
idx = iface_guids.index(guid)
iface_names[idx] = wr.QueryValueEx(reg_subkey, 'DriverDesc')[0]
except ValueError:
pass
except PermissionError:
pass
return iface_names
x = ni.interfaces()
pprint(get_driver_name_from_guid(x))
...这给了我:
['Microsoft Wi-Fi Direct Virtual Adapter',
'Bluetooth Device (Personal Area Network)',
'Dell Wireless 1395 WLAN Mini-Card',
'Broadcom 440x 10/100 Integrated Controller',
'VirtualBox Host-Only Ethernet Adapter',
'(unknown)',
'Microsoft ISATAP Adapter',
'Microsoft ISATAP Adapter']
关于python - 如何在 Windows 下使用 netifaces 获取有意义的网络接口(interface)名称而不是 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913516/
如果这是一个愚蠢的问题,请提前道歉,因为我是编程新手。 我有一段像这样的简单代码,它显示了网络接口(interface)地址及其信息的列表, import neitfaces print(netifa
这可能听起来很愚蠢,但老实说我不知道如何做到正确。我现在已经在 Python 中闲逛了一段时间了。我想访问由netifaces(特定网卡的Mac地址)制作的字典,导入一个条目,然后将其打印为一个优
我在 python 中使用 netifaces 获取本地 ip 地址,但是如何选择当前使用的(系统)网络接口(interface)?请帮帮我。谢谢! 最佳答案 您的要求仍然不完全清楚,因为系统不一定具
我的项目需要使用 netifaces 模块,但我无法获取它。我尝试通过 easy_install 安装源代码,但每次我收到此消息: error: Unable to find vcvarsall.ba
我正在尝试通过python获取我电脑网卡的IP地址和MAC地址。我从 here 得到了一些代码 我创建了一个项目“getip”。创建“main.py”。然后我修改“main.py”的代码如下 from
我在 buildozer 要求中有导入 netifaces。但是在构建应用程序之后。在应用程序运行时,我在 kivy 应用程序中的 android 上导入 netifaces 时遇到问题。输出如下。这
我在 Mac OS 上开发了我的应用程序,它运行良好。在 Mac 上我得到这个: $ python3 Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 0
我尝试通过以下方式在 Python 3.6.2 中安装 netifaces: pip install netifaces 但是当我在 cmd 中运行它时,我得到了这个错误: c:\users\seye
我用 Python3 编写了一个程序,它使用了 netifaces 包,我用 pip3 在两台装有 Ubuntu 13.04 和 Ubuntu 13.10 的计算机上安装了它。但是,我需要将它安装在其
我使用 netifaces 模块。 import netifaces print netifaces.interfaces() 但这显示了下面的结果: ['{CDC97813-CC28-4260-B
我在 AWS EC2 上设置了一个新的 Debian 10 (Buster) 实例,并且能够安装一个依赖于 netifaces 的 pip3 包,但是当我第二天回到它时,该包中断了,报告了 netif
我正在尝试使用 pip install python-novaclient 安装 OpenStack python novaclient此任务失败:netifaces.c:185:6 #error Y
我是一名优秀的程序员,十分优秀!