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

mar*_*gio 24 c# wireless windows-vista

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

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

mar*_*gio 24

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

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

wlan = new WlanClient();
Run Code Online (Sandbox Code Playgroud)

然后我可以使用以下代码获取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)));
}
Run Code Online (Sandbox Code Playgroud)

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

Byr*_*oss 5

我们使用的是托管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;
Run Code Online (Sandbox Code Playgroud)

  • 这可能不适用于所有 Windows 语言,因为 netsh 的输出已本地化。 (2认同)