Подтвердить что ты не робот

Получить SSID беспроводной сети, с которой я подключен, с С#.Net в Windows Vista

Я хотел бы знать, есть ли какой-либо класс .Net, который позволяет мне узнать SSID беспроводной сети, к которой я подключен. Пока я нашел библиотеку, связанную ниже. Является ли лучшее, что я могу получить, или я должен использовать что-то еще? Управляемый WiFi (http://www.codeplex.com/managedwifi)

Метод, который использует WMI, работает для Windows XP, но он больше не работает с Windows Vista.

4b9b3361

Ответ 1

Я решил использовать библиотеку. Это привело к тому, что было легко работать с предоставленными классами:

Сначала мне пришлось создать объект 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)));
        }

Ответ 2

Похоже, что это будет делать то, что вы хотите:

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

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

Ответ 4

Мы использовали управляемую библиотеку wifi, но она генерирует исключения, если сеть отключена во время запроса.

Try:

        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;

Ответ 5

Вам придется использовать собственный API WLAN. Об этом долго обсуждается здесь. По-видимому, это то, что использует API Managed Wifi, поэтому вам будет проще использовать его, если у вас нет каких-либо ограничений на использование кода LGPL.

Ответ 6

проверьте веб-сайт http://wwww.daedaltech.com, они дают DLL, с помощью которой мы можем найти SSID и MAC-адрес