как получить информацию о использовании сети за месяц? Такая функция есть в параметрах но мне хотелось бы получить это с помощью C#.

1 Answers
Нелегко было найти решение, но оно есть.
Покажу, как получить данные по использованию сети за последние 30 дней.
- Нужно создать консольное приложение .NET 8 (можно 5, 6 или 7)
- Нужно в свойствах проекта задать, что это приложение поддерживает Windows 10, так как в более ранних версиях Windows нет нужного вам API
.csproj выглядит у меня так
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>
<Platforms>x64</Platforms>
</PropertyGroup>
</Project>
Где windows10.0.17763.0 - минимально допустимая версия Windows. Можете поставить версию поновее. По факту у меня Windows 11, и оно работает.
Теперь код приложения
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Windows.Networking.Connectivity;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
DateTime now = DateTime.Now;
NetworkUsageStates states = new() { Roaming = TriStates.DoNotCare, Shared = TriStates.DoNotCare };
IReadOnlyList<ConnectionProfile> profiles = NetworkInformation.GetConnectionProfiles();
Dictionary<string, ulong> stats = [];
foreach (var profile in profiles)
{
IReadOnlyList<NetworkUsage> usages = await profile.GetNetworkUsageAsync(now.AddDays(-31), now, DataUsageGranularity.PerDay, states);
ulong total = 0;
foreach (var usage in usages)
{
if (usage.ConnectionDuration > TimeSpan.Zero)
{
Console.WriteLine($"{profile.ProfileName}: BytesReceived = {usage.BytesReceived} BytesSent = {usage.BytesSent}");
total += usage.BytesReceived + usage.BytesSent;
}
}
if (total > 0)
{
stats[profile.ProfileName] = total;
}
}
Console.WriteLine(new string('-', 20));
foreach (var pair in stats)
{
Console.WriteLine($"{pair.Key}: {(double)pair.Value / 1024 / 1024 / 1024:F2} GB");
}
}
}
}
Вывод в консоль
wifi1: BytesReceived = 1385350215 BytesSent = 198060725
wifi1: BytesReceived = 456027282 BytesSent = 44770234
wifi1: BytesReceived = 4213644672 BytesSent = 111855319
wifi1: BytesReceived = 6071369015 BytesSent = 76330321530
wifi1: BytesReceived = 16358465099 BytesSent = 334014366113
wifi1: BytesReceived = 1125077106 BytesSent = 64182864
wifi1: BytesReceived = 472635448 BytesSent = 114018107
wifi1: BytesReceived = 348344511 BytesSent = 40343842
wifi1: BytesReceived = 426505738 BytesSent = 25649539
wifi1: BytesReceived = 68985386 BytesSent = 5557780
wifi2: BytesReceived = 267469468 BytesSent = 51599637
wifi2: BytesReceived = 304084758 BytesSent = 83970579
wifi2: BytesReceived = 187640376 BytesSent = 46735277
wifi2: BytesReceived = 316538976 BytesSent = 26542616
wifi2: BytesReceived = 1781674090 BytesSent = 117298435
wifi2: BytesReceived = 907374159 BytesSent = 156286773
wifi2: BytesReceived = 71818844 BytesSent = 15423720
wifi3: BytesReceived = 256440184 BytesSent = 15933011
wifi3: BytesReceived = 806886383 BytesSent = 61733032
wifi3: BytesReceived = 830580820 BytesSent = 82492124
wifi3: BytesReceived = 0 BytesSent = 0
wifi3: BytesReceived = 1967630496 BytesSent = 147507217
wifi3: BytesReceived = 199962956 BytesSent = 18730649
wifi3: BytesReceived = 0 BytesSent = 0
wifi3: BytesReceived = 0 BytesSent = 0
wifi3: BytesReceived = 303616476 BytesSent = 16836866
wifi3: BytesReceived = 0 BytesSent = 0
wifi3: BytesReceived = 608929053 BytesSent = 54180291
wifi3: BytesReceived = 13808166900 BytesSent = 222281672
wifi3: BytesReceived = 1193427840 BytesSent = 121861668
wifi3: BytesReceived = 77435874 BytesSent = 5416986
wifi3: BytesReceived = 117213903 BytesSent = 19610923
wifi3: BytesReceived = 365334897 BytesSent = 26129097
wifi3: BytesReceived = 887284189 BytesSent = 86818797
--------------------
wifi1: 411,53 GB
wifi2: 4,04 GB
wifi3: 20,77 GB
Здесь за последний месяц я был подключен к трем разным Wi-Fi сетям. Система выдала статистику по каждой из них.
Что касается детального вывода выше, то это мои сеансы подключений к сети. Там есть свойство usage.ConnectionDuration, где можно посмотреть продолжительность подключения.
wifi3: 20,77 GB в точности совпадает с тем, что показывает на текущий момент моя панель управления.
Решение нашел здесь: https://devblogs.microsoft.com/oldnewthing/20210520-00/?p=105232
Если нужно красиво отформатировать мегабайты-гигабайты, решение есть здесь: Конвертирование памяти для видеокарты
- 49,560
