Holen SSID des drahtlosen Netzwerks ich verbunden bin, die mit C # .NET auf Windows Vista
-
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.
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);
}
}
}
gibt es einige weitere Informationen in Wie erhalte ich die verfügbaren WLAN-APs und deren Signalstärke in .net?
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.