当前位置:  开发笔记 > 编程语言 > 正文

在Windows Vista上获取我使用C#.Net连接的无线网络的SSID

如何解决《在WindowsVista上获取我使用C#.Net连接的无线网络的SSID》经验,为你挑选了2个好方法。

我想知道是否有任何.Net类允许我知道我所连接的无线网络的SSID.到目前为止,我只发现下面链接的库.我能得到的最好还是应该用别的东西? 托管WiFi(http://www.codeplex.com/managedwifi)

利用WMI的方法适用于Windows XP,但它不再适用于Windows Vista.



1> mariosangior..:

我解决了使用该库的问题.结果很容易使用提供的类:

首先,我必须创建一个WlanClient对象

wlan = new WlanClient();

然后我可以使用以下代码获取PC连接到的SSID列表:

Collection connectedSsids = new Collection();

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


@MrAsterisco:您需要上面提到的Managed WiFi(http://www.codeplex.com/managedwifi)库.

2> Byron Ross..:

我们使用的是托管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;

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有