如何确定接口是否是Windows PC上的物理LAN端口?

mon*_*kut 5 windows wmi admin ipconfig

我正在寻找一种方法来确定接口是否是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

Jay*_*ker 5

调用GetIfEntry并在返回的MIB_IFROW结构中查找IF_TYPE_ETHERNET_CSMACD的dwType 。

或在.NET中,查找带有NetworkNetworkType以太网的System.Net.NetworkInformation.NetworkInterface 。


Jef*_*eff 0

如果一台机器有两个 NIC,您将如何选择哪一个是正确的?我见过的唯一方法是为用户提供一个包含每个接口 IP 地址的下拉组合。请参阅 Wireshark 的示例 -

如果还有其他解决方案,我想听听 -