Puede obtener el índice de interfaz de su adaptador de red utilizando las clases .NET NetworkInterface
(y relacionadas).
Aquí es un ejemplo de código:
static void PrintInterfaceIndex(string adapterName)
{
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
Console.WriteLine("IPv4 interface information for {0}.{1}",
properties.HostName, properties.DomainName);
foreach (NetworkInterface adapter in nics)
{
if (adapter.Supports(NetworkInterfaceComponent.IPv4) == false)
{
continue;
}
if (!adapter.Description.Equals(adapterName, StringComparison.OrdinalIgnoreCase))
{
continue;
}
Console.WriteLine(adapter.Description);
IPInterfaceProperties adapterProperties = adapter.GetIPProperties();
IPv4InterfaceProperties p = adapterProperties.GetIPv4Properties();
if (p == null)
{
Console.WriteLine("No information is available for this interface.");
continue;
}
Console.WriteLine(" Index : {0}", p.Index);
}
}
A continuación, sólo llamar a esta función con el nombre de su adaptador de red:
PrintInterfaceIndex("your network adapter name");
También puede obtener el InterfaceIndex de su adaptador de red mediante el uso de la clase WMI Win32_NetworkAdapter
. La clase Win32_NetworkAdapter
contiene una propiedad llamada InterfaceIndex.
Por lo tanto, para recuperar el InterfaceIndex para un adaptador de red con un nombre dado, utilice el siguiente código:
ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter WHERE Description='<Your Network Adapter name goes here>'");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
using (ManagementObjectCollection queryCollection = searcher.Get())
{
foreach (ManagementObject mo in queryCollection)
{
Console.WriteLine("InterfaceIndex : {0}, name {1}", mo["InterfaceIndex"], mo["Description"]);
}
}
}
Si no desea utilizar WMI también se puede utilizar la función de API Win32 GetAdaptersInfo en combinación con la estructura IP_ADAPTER_INFO
. Encontrará un ejemplo aquí pinvoke.net.
Hola, Hans, tu código parece muy prometedor. Lo intentaré mañana a primera hora de la mañana, cuando regrese al trabajo. –
Hola, Hans: tu código parece muy prometedor, lo intentaré mañana como lo primero cuando vuelva a trabajar. Sin embargo, hoy he intentado usar el enfoque de WMI, y enumeré todas las propiedades disponibles para cada adaptador de red, pero no vi ninguna propiedad llamada "InterfaceIndex". ¿Tal vez simplemente lo pasé por alto? Estoy usando Windows XP Professional SP3. Te dejaré saber lo que averigüe mañana.Muchas gracias por su participación. ¡Es fantástico tener gente como usted! –
@MartinChristiansen: esta propiedad WMI no está disponible en Windows XP. – Hans