有没有办法使用.NET访问所有WiFi接入点及其各自的RSSI值?如果我可以在不使用非托管代码的情况下完成它,那将是非常好的,如果它在单声道和.NET中工作,那将更好.
如果有可能我会申请代码样本.谢谢
以下是我发现的一些类似的stackoverflow问题:
我知道该帖子获取Windows Vista上与C#.Net连接的无线网络的SSID, 它描述了如何在C#中获取ssid。但是,dotnet核心不支持该库。有没有办法获取点网核心中当前连接的wifi适配器的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();
Run Code Online (Sandbox Code Playgroud)
多谢你们。
我是Win7和WMI的新手.请告诉我从WiFi到哪里查看有效接入点以及如何为每个接入点获取ssid/rssi.
我用过:
ManagementClass mc = new ManagementClass("root\\WMI", "MSNdis_80211_ServiceSetIdentifier", null);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(@"root\wmi","SELECT * FROM MSNdis_80211_BSSIList");
Run Code Online (Sandbox Code Playgroud)
但我得到0结果.这个类是否支持Win7?有人可以帮忙吗?
我尝试了两种不同的方式
try{
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);
}
}
}
}catch(Exception ex){
}
Run Code Online (Sandbox Code Playgroud)
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) {
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 && ni.OperationalStatus== OperationalStatus.Up ) {
Network = "NETWORK ( N/A )"; …
Run Code Online (Sandbox Code Playgroud)