Mau*_*uro 4 c# command-line netsh
重要编辑:再次回到这个主题.正如您所说,应该没有默认NIC,我试图了解是否有办法检测实际连接的所有NIC.
拥有我的物理接口的MAC地址有一种编程方式来获取接口名称/接口状态/等...
例如,我的XP机器:
器件Realtek RTL8139系列PCI快速以太网NIC MAC XXXX-XXXX-XXXX
XXXX-XXXX-XXXX就是我所知道的
通过此设备,我使用"本地连接"连接进行连接(所有信息都与网关,子网等相关)
所以我正在搜索XXXX-XXXX-XXXX和本地连接之间的链接.
希望现在一切都清楚了.
谢谢大家!PS抱歉延迟... +1投票给所有人,耐心等待!
老问题
大家好,我想使用命令netsh更改"本地连接"的IP.
我的问题是有一种编程方式来获取默认连接名称(即恰好是"本地连接")?
谢谢
编辑:我不需要所有连接名称的列表,但只需要默认列表.访问注册表我得到列表,似乎默认标记为*.不幸的是,在控制台上打印它们有点像10种不同的"局域连接"...
Local Area Connection* 13
6TO4 Adapter
VMware Network Adapter VMnet1
Wireless Network Connection 2
Reusable ISATAP Interface {483968F2-DBF9-4596-B8BE-725FAAB89F93}
Local Area Connection* 3
Local Area Connection* 2
Reusable Microsoft 6To4 Adapter
Local Area Connection* 7
VMware Network Adapter VMnet8
Local Area Connection* 8
isatap.replynet.prv
Local Area Connection* 9
Local Area Connection* 12
isatap.{FAA80CE0-D641-408A-83F8-5F9C394FFD76}
Bluetooth Network Connection
Local Area Connection* 4
isatap.{40156BF9-6599-4912-A315-62DE5342B452}
isatap.{7651F2F5-4888-4258-92C5-6822C506D726}
Local Area Connection* 5
isatap.{34F5F074-8AA7-4421-AE24-131BA2DC3458}
Local Area Connection*
Local Area Connection* 10
Local Area Connection
Local Area Connection* 6
Wireless Network Connection
Run Code Online (Sandbox Code Playgroud)
等等...
EDIT2:@ ho1运行你的代码更改不存在Name的FriendlyName你会得到类似后面的列表,遗憾的是它似乎不是预期的输出
0 - WAN Miniport (SSTP)
1 - WAN Miniport (IKEv2)
2 - WAN Miniport (L2TP)
3 - WAN Miniport (PPTP)
4 - WAN Miniport (PPPOE)
5 - WAN Miniport (IPv6)
6 - WAN Miniport (Network Monitor)
7 - Realtek RTL8168C(P)/8111C(P) Family PCI-E Gigabit Ethernet NIC (NDIS 6.20)
8 - WAN Miniport (IP)
9 - Microsoft ISATAP Adapter
10 - RAS Async Adapter
11 - Broadcom 802.11g Network Adapter
12 - Microsoft 6to4 Adapter
13 - VMware Virtual Ethernet Adapter for VMnet1
14 - Microsoft ISATAP Adapter #3
15 - VMware Virtual Ethernet Adapter for VMnet8
16 - Microsoft ISATAP Adapter #2
17 - Microsoft ISATAP Adapter #4
18 - Microsoft Virtual WiFi Miniport Adapter
19 - Microsoft ISATAP Adapter #5
20 - Microsoft ISATAP Adapter
22 - Bluetooth Device (Personal Area Network)
23 - Microsoft 6to4 Adapter
24 - Microsoft 6to4 Adapter #3
25 - Microsoft 6to4 Adapter #2
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,Windows中没有"默认"NIC适配器.使用的NIC是根据目标网络(地址)和指标选择的.
例如,如果您有两个NIC和两个不同的网络:
10.1.10.1 - Local Area Connection (metric 20)
10.1.50.1 - Local Area Connection 2 (metric 10)
Run Code Online (Sandbox Code Playgroud)
而你想连接到10.1.10.15,Windows将选择Local Area Connection和路由这种方式.相反,如果要连接10.1.50.30,Windows会选择Local Area Connection 2.
现在,如果您尝试连接到74.125.67.106(google.com),Windows将选择,Local Area Connection 2因为它具有较低的指标值.
编辑:这是一篇很棒的文章解释路由 - http://www.windowsnetworking.com/articles_tutorials/Making-Sense-Windows-Routing-Tables.html
EDIT2:拼写.
希望这可以帮助.
这是一种肮脏的做法,因为它可以通过合并 LINQ 等来优化
using System.Net.NetworkInformation;
List<NetworkInterface> Interfaces = new List<NetworkInterface>();
foreach (var nic in NetworkInterface.GetAllNetworkInterfaces())
{
if (nic.OperationalStatus == OperationalStatus.Up)
{
Interfaces.Add(nic);
}
}
NetworkInterface result = null;
foreach (NetworkInterface nic in Interfaces)
{
if (result == null)
{
result = nic;
}
else
{
if (nic.GetIPProperties().GetIPv4Properties() != null)
{
if (nic.GetIPProperties().GetIPv4Properties().Index < result.GetIPProperties().GetIPv4Properties().Index)
result = nic;
}
}
}
Console.WriteLine(result.Name);
Run Code Online (Sandbox Code Playgroud)
您可能需要使用来自nic.GetIPProperties()和的结果来定制您的结果nic.GetIPProperties().GetIPv4Properties()