如何在dotnet核心中获得当前连接的WiFi SSID和信号强度?

本文关键字:SSID WiFi 信号 连接 dotnet 核心 | 更新日期: 2023-09-27 18:18:31

我知道这篇文章获取我在Windows Vista上使用c# .Net连接的无线网络的SSID它描述了如何在c#中获得ssid。但是,该库在。net core中不受支持。是否有办法获得当前连接的wifi适配器在dotnet核心的ssid和信号强度?我试过使用NetworkInterface名称空间(System.Net.NetworkInformation),这似乎至少给了我一些关于网络的诊断信息,但它肯定不包括ssid。你们怎么看?

我正在玩的代码如下。但这并没有给我我想要的。我主要是用它来探索与调试器。

var interfaces = NetworkInterface.GetAllNetworkInterfaces();
var connected = interfaces
     .Where(i => i.OperationalStatus == OperationalStatus.Up)
     .Where(i => i.NetworkInterfaceType == NetworkInterfaceType.Wireless80211)
     .ToList();
var wifi = connected[0];
var props = wifi.GetIPProperties();
var addr = wifi.GetPhysicalAddress();
var stats = wifi.GetIPStatistics();

谢谢。

如何在dotnet核心中获得当前连接的WiFi SSID和信号强度?

我不知道你使用的是什么。net Core版本,但以下NuGet包从微软集成到我的。net Core 3.0应用程序:

Microsoft.WindowsAPICodePack-Core version 1.1.0.2

虽然这个库相当老——它可以追溯到2014年——而且它不符合。net标准。显然,这不是跨平台的,只能在Windows上工作。它没有提供您需要的信息,但也许它是对真正解决方案的有用提示?

示例代码:

var networks = NetworkListManager.GetNetworks(NetworkConnectivityLevels.Connected);            
foreach (var network in networks) { 
    sConnected = ((network.IsConnected == true) ? " (connected)" : " (disconnected)");
    Console.WriteLine("Network : " + network.Name + " - Category : " + network.Category.ToString() + sConnected);
}
信号强度

使用以下使用netsh的PowerShell要点,您将获得信号强度:

(netsh wlan show interfaces) -Match '^'s+Signal' -Replace '^'s+Signal's+:'s+',''

在进一步的谷歌搜索之后,我偶然发现了ManagedWlan项目的Codeplex存档:

https://archive.codeplex.com/?p=managedwifi

它提供了与Windows内核api的广泛互操作。我相信它也能让你找回信号强度。我已经将提供的MIT许可源代码迁移到GitHub存储库:https://github.com/cveld/ManagedWifi

它向。net Core 3.0编译,但显然不是跨平台的。