Obtenir SSID du réseau sans fil auquel je suis connecté C#.Net sous Windows Vista
j'aimerais savoir s'il existe une classe .Net qui me permette de connaître le SSID du réseau sans fil auquel je suis connecté. Jusqu'à présent, je n'ai trouvé que la bibliothèque liée ci-dessous. Est le mieux que je puisse obtenir ou dois-je utiliser autre chose? géré WiFi ( http://www.codeplex.com/managedwifi )
La méthode qui exploite WMI works pour Windows XP mais il ne fonctionne plus avec Windows Vista.
6 réponses
j'ai résolu en utilisant la bibliothèque. Il s'est avéré assez facile de travailler avec les classes fournies:
J'ai d'abord dû créer un objet WlanClient
wlan = new WlanClient();
et ensuite je peux obtenir la liste des SSIDs auxquels le PC est connecté avec ce code:
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)));
}
Il semble que cela va faire ce que vous voulez:
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);
}
}
}
il y a plus d'information dans Comment puis-je obtenir les APs wifi disponibles et leur puissance de signal dans .net?
nous utilisions la bibliothèque wifi gérée, mais elle lance des exceptions si le réseau est déconnecté lors d'une requête.
, Essayez:
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;
consultez le site http://wwww.daedaltech.com ils donnent une dll avec laquelle nous pouvons trouver l'adresse SSID et mac