其实也就是获取所有网卡的名字,例如“宽带连接” “本地连接”等,要列出所有,我试了GetAdaptersInfo 和 GetIfTable,在“宽带连接”已经连接的情况下,可以看到能取到“宽带连接”,但如果运行代码时,“宽带连接”是断开状态,就无法取到它。
我做一个监视宽带连接自动拨号的东东,取不到宽带连接可不行的。
操作系统 window 10 x64
可以用WMI查询的:
static void ShowNetworkAdapter() { var manageObjects = new ManagementClass("Win32_NetworkAdapter").GetInstances(); foreach (var obj in manageObjects) { Console.WriteLine(obj["Name"] + " >> "+ obj["NetConnectionID"]); } }
记得包括带宽,速率等等都用WMI查询的,比用系统API方便。 可以参考下这个页面: http://itknowledgeexchange.techtarget.com/powershell/wmi-and-network-adapters-1/
不行,取不到我正在使用的“宽带连接”,我的代码如下:
Set objWMIService = GetObject("winmgmts:") Set colNicConfig = objWMIService.ExecQuery("SELECT * FROM " & "Win32_NetworkAdapterConfiguration") For Each objNicConfig In colNicConfig Debug.Print "Network Adapter: " & objNicConfig.Caption Debug.Print " IP Address(es):" If Not IsNull(objNicConfig.IPAddress) Then For Each strIPAddress In objNicConfig.IPAddress Debug.Print " " & strIPAddress Next End If Next
@沧海一杰: 你和我用的是不一样的,用我给的代码试试。我是测试过的,能取到所有的网卡的名称的,就是代码中的obj["NetConnectionID"]。
@天方: 老兄,你有试过在“宽带连接”断开的情况下能娶到吗?我已经试了,你的方法也不行。
@天方: 我现在写的非托管代码,你给的该不会是C#专用的吧?
@沧海一杰: 就是回答了,分就给你了。