localStorage
. Данные не являются постоянными, т. Е. Данные доступны только для каждого окна (или вкладки в браузерах, таких как Chrome и Firefox). Данные доступны только во время сеанса страницы. Сделанные изменения сохраняются и доступны для текущей страницы, а также для будущих посещений сайта в том же окне. После закрытия окна хранилище удаляется. Минусы: данные доступны только внутри окна / вкладки, в котором она была установлена. Подобно localStorage
, tt работает с политикой того же происхождения . Таким образом, сохраненные данные будут доступны только по одному и тому же происхождению. Я разрешил пользование библиотекой. Это закончилось, чтобы быть довольно легким работать с обеспеченными классами:
Первый я должен был создать объект WlanClient
wlan = new WlanClient();
, И затем я могу получить список SSIDs, с которым подключен ПК с этим кодом:
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)));
}
Мы использовали управляемую библиотеку Wi-Fi, но она выдает исключения, если сеть отключена во время запроса.
Попробуйте:
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);
}
}
}
Более подробная информация содержится в . Как получить доступные точки доступа Wi-Fi и уровень сигнала в .net?
Вы оказываетесь перед необходимостью использовать собственный API WLAN. Существует долгая дискуссия об этом здесь . По-видимому, это - то, что использует Управляемый API Wi-Fi, таким образом, для Вас будет легче использовать его, если у Вас не будет ограничений для использования кода LGPL.
(перекрестно разосланный в , Как получить в настоящее время соединенный Wi-Fi SSID в c# с помощью WMI или Системы. Сеть. Окна NetworkInformation 10? )
я нашел довольно старую библиотеку, относящуюся ко времени 2014:
Microsoft.WindowsAPICodePack-Core version 1.1.0.2
, Хотя это не соответствует Стандарту.NET, эта библиотека интегрирует с моим.NET Core 3,0 приложения, но очевидно не является межплатформенной.
Пример кода:
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);
}