Holen SSID des drahtlosen Netzwerks ich verbunden bin, die mit C # .NET auf Windows Vista

StackOverflow https://stackoverflow.com/questions/431755

  •  08-07-2019
  •  | 
  •  

Frage

Ich würde gerne wissen, ob es eine .NET-Klasse ist, die ich die SSID des drahtlosen Netzwerks zu Ich bin verbunden wissen kann. Bisher fand ich nur die Bibliothek unter unten stehenden Link. Ist das beste, was ich bekommen kann oder sollte ich etwas anderes? Managed WiFi ( http://www.codeplex.com/managedwifi )

Die Methode, die ausnutzt WMI arbeitet für Windows XP, aber ist es nicht mehr mit Windows Vista arbeiten.

War es hilfreich?

Lösung

ich beschlossen, die Bibliothek. Es führte zu ganz einfach mit den Klassen arbeiten zu finden:

Zuerst hatte ich ein WlanClient Objekt erstellen

wlan = new WlanClient();

Und dann kann ich die Liste des SSIDs erhalte der PC mit diesem Code verbunden ist:

Collection<String> connectedSsids = new Collection<string>();

foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces)
{
   Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid;
   connectedSsids.Add(new String(Encoding.ASCII.GetChars(ssid.SSID,0, (int)ssid.SSIDLength)));
}

Andere Tipps

Wir wurden mit der Wi-Fi-Bibliothek verwaltet, aber es wirft Ausnahmen, wenn das Netzwerk während einer Abfrage getrennt wird.

Versuchen:

var process = new Process
{
    StartInfo =
    {
    FileName = "netsh.exe",
    Arguments = "wlan show interfaces",
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
    }
};
process.Start();

var output = process.StandardOutput.ReadToEnd();
var line = output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault(l => l.Contains("SSID") && !l.Contains("BSSID"));
if (line == null)
{
    return string.Empty;
}
var ssid = line.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries)[1].TrimStart();
return ssid;

Es sieht aus wie das wird tun, was Sie wollen:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSNdis_80211_ServiceSetIdentifier");


foreach (ManagementObject queryObj in searcher.Get())
{
    Console.WriteLine("-----------------------------------");
    Console.WriteLine("MSNdis_80211_ServiceSetIdentifier instance");
    Console.WriteLine("-----------------------------------");

    if(queryObj["Ndis80211SsId"] == null)
        Console.WriteLine("Ndis80211SsId: {0}",queryObj["Ndis80211SsId"]);
    else
    {
        Byte[] arrNdis80211SsId = (Byte[])
        (queryObj["Ndis80211SsId"]);
        foreach (Byte arrValue in arrNdis80211SsId)
        {
            Console.WriteLine("Ndis80211SsId: {0}", arrValue);
        }
    }
}

http://bytes.com/groups/net- c / 657473-wmi-wifi-Entdeckung

Sie gehen zu müssen, nativen WLAN-API verwenden. Es gibt eine lange Diskussion über das hier . Offenbar ist es das, was Wifi-API verwendet Managed, so wird es einfacher für Sie, es zu benutzen, wenn Sie LGPL-Code keine Einschränkungen zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top