我正在寻找一种方法来确定接口是否是Windows中PC上的物理802.3以太网端口.
使用ipconfig/all我可以列出所有接口,当我在我的电脑上执行此操作时,可以在此列出几个条目,包括VPN,蓝牙,Wifi和物理以太网接口.
我正在寻找像"isPhysical(interface)"这样的东西.(可以有多个物理局域网端口,我只是想知道它是否是物理端口).
更新:
杰伊和克里斯谢谢!
(评论中没有足够的空间,所以我会在这里发布)
我目前正在寻找使用WMI Win32_NetworkAdapter.但是,它显示4个接口,AdapterType ="Ethernet 802.3".
我的电脑上只有1个物理端口,其他人有名称"虚拟机网络服务驱动程序".(我认为这些是由我公司安装的,因为一些恶劣的原因)
我在界面中找到了我需要的属性,但它在winXP中不可用!
PhysicalAdapter数据类型:布尔值访问类型:只读
指示适配器是物理适配器还是逻辑适配器.如果为True,则适配器是物理的.Windows Server 2003,Windows XP,Windows 2000和Windows NT 4.0:此属性不可用.
有没有办法确定它是否是一个物理端口,除了对名称中的"虚拟"一词进行文本过滤?
更新12/08
如果安装了VM,则会添加虚拟接口.
以下是有关虚拟适配器的一些详细信息:http: //blogs.msdn.com/virtual_pc_guy/archive/2005/04/01/404816.aspx
发现如果用户没有管理员权限,WMI接口不返回所需数据的问题.所以,现在看一下GetAdapterInfo方法.但是,它似乎将"虚拟机服务驱动程序"添加到实际适配器的描述中,使"虚拟"文本检查无效.
并且GetAdapterInfo返回的结构:
http://msdn.microsoft.com/en-us/library/aa366062(VS.85).aspx
调用GetIfEntry并在返回的MIB_IFROW结构中查找IF_TYPE_ETHERNET_CSMACD的dwType 。
或在.NET中,查找带有NetworkNetworkType以太网的System.Net.NetworkInformation.NetworkInterface 。