Windows Vista의 C# .NET에 연결된 무선 네트워크의 SSID를 얻으십시오.

StackOverflow https://stackoverflow.com/questions/431755

  •  08-07-2019
  •  | 
  •  

문제

연결된 무선 네트워크의 SSID를 알 수있는 .NET 클래스가 있는지 알고 싶습니다. 지금까지 나는 도서관이 아래 링크 된 것을 발견했다. 내가 얻을 수있는 최선입니까, 아니면 다른 것을 사용해야합니까?Wi -Fi 관리 (http://www.codeplex.com/managedwifi)

이용하는 방법 WMI Windows XP에서 작동하지만 Windows Vista와 더 이상 작동하지 않습니다.

도움이 되었습니까?

해결책

라이브러리를 사용하여 해결했습니다. 그 결과로 제공된 수업에서 작업하기가 매우 쉬워졌습니다.

먼저 나는 wlanclient 객체를 만들어야했다

wlan = new WlanClient();

그런 다음 PC 가이 코드와 연결된 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-c/657473-wmi-wifi-discovery

네이티브 WLAN API를 사용해야합니다. 그것에 대한 긴 토론이 있습니다 여기. 분명히 이것은 관리 된 Wi -Fi API가 사용하는 것이므로 LGPL 코드를 사용하는 제한이 없으면 사용하기가 더 쉬울 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top