Es stellt sich heraus, Informationen über jedes Netzwerk als ‚Netzwerk-Profil‘ von Windows-gespeichert ist, speichert seinen Namen und andere Informationen wie, ob es öffentlich oder nicht. Der Name kann von Benutzern in der Systemsteuerung geändert werden, aber in meiner Situation ist das kein Problem. Das Windows API Code Pack von Microsoft enthält die APIs, die zum Abrufen der Sammlung von Netzwerkprofilen erforderlich sind Da es eine Menge Bloat enthält, die ich nicht brauche, ist der Mindestcode, um die Windows API can be found here zu umbrechen.
Eine Sammlung der Netzwerkprofile können dann wie so gefunden werden:
//Get the networks that are currently connected to
var networks = NetworkListManager.GetNetworks(NetworkConnectivityLevels.Connected);
Jedes Objekt in der Sammlung ein Netzwerkprofil dar und enthält eine Sammlung von Objekten NetworkConnection
. Jedes Objekt NetworkConnection
scheint Informationen über die Verbindung einer Schnittstelle zum Basisnetzwerk zu enthalten.
foreach(Network network in networks)
{
//Name property corresponds to the name I originally asked about
Console.WriteLine("[" + network.Name + "]");
Console.WriteLine("\t[NetworkConnections]");
foreach(NetworkConnection conn in network.Connections)
{
//Print network interface's GUID
Console.WriteLine("\t\t" + conn.AdapterId.ToString());
}
}
Die NetworkConnection.AdapterId
Eigenschaft ist die gleiche Netzwerk-Interface-GUID, dass die NetworkInterface.Id
Eigenschaft kennt.
So können Sie bestimmen, mit welchem Netzwerk eine Schnittstelle verbunden ist, indem Sie prüfen, ob eine der Verbindungen des Netzwerks die gleiche ID wie die Schnittstelle hat. Beachten Sie, dass sie anders dargestellt sind, so dass Sie ein bisschen mehr Arbeit zu tun haben:
Sowohl meine Wi-Fi und Ethernet-Schnittstellen zum BELL024 Netzwerk in dem obigen Beispiel verbunden sind.
Netzwerke haben keine Namen, sie haben Netzwerkadressen. Es kann einen DNS-Namen für das Netzwerk auf einem DNS-Server geben, aber das ist nicht inhärent im Netzwerk und ein DNS-Server könnte mehrere Namen für ein Netzwerk haben, oder unterschiedliche DNS-Server könnten unterschiedliche Namen für das Netzwerk haben. Wie ein Host ein Netzwerk aufruft, ist ziemlich willkürlich. Ein Benutzer könnte ein Wi-Fi-Netzwerk umbenennen, um Ethernet zu sagen, oder umgekehrt. –
Ich verstehe. Wie hat Windows/dieser Host die Zeichenfolge "BELL024" für das Netzwerk ermittelt? Es spielt für mich keine Rolle, ob der Benutzer ihn umbenennen kann, ich möchte nur, dass er neben dem Namen der Netzwerkschnittstelle angezeigt wird, damit er leicht erkennen kann, in welches Netzwerk die App den Traffic leiten wird. – sawch
Das ist etwas, das jemand in Windows eingegeben hat. Es ist möglicherweise die Windows-Arbeitsgruppe, die Windows entdeckt hat. Wenn es sich um einen Arbeitsgruppennamen handelt, könnte dieser auf mehreren Schnittstellen vorhanden sein. –