Получить SSID беспроводной сети, к которой я подключен, с помощью C #.Сеть в Windows Vista
-
08-07-2019 - |
Вопрос
Я хотел бы знать, существует ли какой-либо .Класс Net, который позволяет мне узнать SSID беспроводной сети, к которой я подключен.Пока я нашел только библиотеку, на которую дана ссылка ниже.Это лучшее, что я могу получить, или мне следует использовать что-то другое?Управляемый Wi-Fi (http://www.codeplex.com/managedwifi)
Метод, который использует WMI работает для Windows XP, но больше не работает с Windows Vista.
Решение
Я решил использовать библиотеку. В результате оказалось довольно легко работать с предоставленными классами:
Сначала я должен был создать объект WlanClient
wlan = new WlanClient();
И тогда я могу получить список SSID, к которым подключен ПК, с помощью этого кода:
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)));
}
Другие советы
Мы использовали управляемую библиотеку WiFi, но она выдает исключения, если сеть отключена во время запроса.
Попробуй:
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;
Похоже, это будет делать то, что вы хотите:
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- с / 657473-WiFi-WMI обнаружение р>
есть дополнительная информация в Как узнать доступные точки доступа wifi и их уровень сигнала в .net?
Вам нужно будет использовать собственный API WLAN. Об этом идет долгая дискуссия. = "nofollow noreferrer"> здесь . Очевидно, это то, что использует API Managed Wifi, поэтому вам будет проще его использовать, если у вас нет никаких ограничений на использование кода LGPL.