una significado saber network ejemplo como celular c# windows-vista wireless

significado - Obtenga el SSID de la red inalámbrica a la que estoy conectado con C#.Net en Windows Vista



ssid router (6)

Me gustaría saber si hay alguna clase .Net que me permita conocer el SSID de la red inalámbrica a la que estoy conectado. Hasta ahora solo he encontrado la biblioteca vinculada a continuación. ¿Es lo mejor que puedo obtener o debería usar algo más? WiFi administrado ( http://www.codeplex.com/managedwifi )

El método que explota WMI funciona para Windows XP pero ya no funciona con Windows Vista.


Estábamos usando la biblioteca wifi gestionada, pero arroja excepciones si la red se desconecta durante una consulta.

Tratar:

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;


Parece que esto hará lo que quieras:

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); } } }

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


Tendrá que usar la API WLAN nativa. Hay una larga discusión al respecto here . Aparentemente, esto es lo que usa Managed WiFi API, por lo que le será más fácil usarlo si no tiene restricciones para usar el código LGPL.




Resolví usar la biblioteca. Resultó ser bastante fácil trabajar con las clases proporcionadas:

Primero tuve que crear un objeto WlanClient

wlan = new WlanClient();

Y luego puedo obtener la lista de los SSID a los que la PC está conectada con este código:

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))); }