Usando WMI puedes hacerlo
Código:
public static void GetAvailableNetworks()
{
try
{
/*Making the search*/
string scope = "root\\WMI";
string query = "SELECT * FROM MSNdis_80211_BSSIList";
ManagementObjectSearcher mos = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection moc = mos.Get();
ManagementObjectCollection.ManagementObjectEnumerator moe = moc.GetEnumerator();
moe.MoveNext();
/*Adapter name*/
Console.WriteLine("Adapter: " + moe.Current.Properties["InstanceName"].Value);
/*Number of available wireless networks*/
Console.WriteLine("Available wireless networks: " + moe.Current.Properties["NumberOfItems"].Value);
ManagementBaseObject[] objarr = (ManagementBaseObject[]) moe.Current.Properties["Ndis80211BSSIList"].Value;
foreach (ManagementBaseObject queryObj in objarr)
{
/*One SSID per line (SSID = name of nerwork)*/
Console.WriteLine(Encoding.ASCII.GetChars((byte[])queryObj.Properties["Ndis80211Ssid"].Value));
/*
* Other info:
* Ndis80211Ssid (Service Set Identifer) (array of uint8) = byte[]
* Ndis80211MacAddress (array of uint8) = byte[]
* Ndis80211Rssi (Recieved Signal Strength Identifier) (uint32) (Must be converted to dBm :/)
*/
}
}
catch (ManagementException e)
{
Console.WriteLine("An error occurred while querying for WMI data: " + e.Message);
}
}