Windows Vista의 C# .NET에 연결된 무선 네트워크의 SSID를 얻으십시오.
-
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);
}
}
}
더 많은 정보가 있습니다 .NET에서 사용 가능한 Wi -Fi AP와 신호 강도를 어떻게 얻습니까?
네이티브 WLAN API를 사용해야합니다. 그것에 대한 긴 토론이 있습니다 여기. 분명히 이것은 관리 된 Wi -Fi API가 사용하는 것이므로 LGPL 코드를 사용하는 제한이 없으면 사용하기가 더 쉬울 것입니다.
제휴하지 않습니다 StackOverflow