Де Windows 8 зберігає передбачуване використання даних через Wifi?


19

Я випадково виявив, що в Windows 8, якщо ви клацніть правою кнопкою миші попередньо підключену бездротову мережу з інтерфейсу екрана «Пуск», є можливість відобразити передбачуване використання даних.

введіть тут опис зображення

введіть тут опис зображення

Де зберігаються ці дані? Чи можливо це отримати через PowerShell / WMI? Прикладом використання для мене буде встановлення автоматизованих сповіщень на основі використання даних - я наразі використовую Networx для більш детальної розбивки, але для швидкого оповіщення, якщо я можу отримати використання, автоматизований маршрут допоможе дуже багато.


1
Цікаво, чому це лише підрахунок .
Der Hochstapler

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlanпогляди пов'язані. Я все ще шукаю.
Боб

Це пов'язано, але моє дослідження показує, що це суто пов'язане з gui, я нічого не бачив, де зберігається фактична оцінка. нічого в Google для цього ключа reg, окрім одного результату на даний момент.
MDMoore313

1
@OliverSalzburg Ймовірно, вони називають його оціночним, оскільки воно може показувати інше число, ніж ваш провайдер. Можливо, вони також здогадуються на деякий відсоток накладних витрат (що Windows не може виміряти, як додано в іншому місці)
derobert

Відповіді:


3

Я пам’ятаю, коли ти вперше задав це питання, але я нарешті розібрався з цим з'ясувати. Сподіваюся, це все-таки корисно для вас чи когось іншого!

Ви можете отримати доступ до цих даних, зателефонувавши в метод GetLocalUsage для об'єктів ConnectionProfile , що є з'єднаннями WLAN / WAN (тобто SSID). GetLocalUsage приймає два параметри DateTime і повертає об'єкт DataUsage, що містить кількість відправлених і отриманих даних протягом зазначеного інтервалу. Ви можете отримати список об'єктів ConnectionProfile, викликавши GetConnectionProfiles метод NetworkInformation .

Я написав таку функцію, яка отримує дані та повертає об’єкт. Перейдіть до нього один або декілька SSID і необов'язково запускайте та зупиняйте DateTime:

function Get-EstimatedDataUsage()
{
    Param(
        [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNullOrEmpty()]
        [String]$ProfileName,

        [Parameter(Position=1, Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [DateTime]$From,

        [Parameter(Position=2, Mandatory=$false)]
        [ValidateNotNullOrEmpty()]
        [DateTime]$To
    )

    Process
    {
        foreach($profile in $ProfileName)
        {
            try
            {
                [void][Windows.Networking.Connectivity.NetworkInformation,Windows,ContentType=WindowsRuntime]
                $ConnectionProfiles = [Windows.Networking.Connectivity.NetworkInformation]::GetConnectionProfiles() | Where-Object ProfileName -EQ $profile
            }
            catch
            {
                Write-Error 'Unable to create instance of Windows.Networking.Connectivity.NetworkInformation.'
                continue
            }

            foreach($ConnectionProfile in $ConnectionProfiles)
            {
                $ProfileName = $ConnectionProfile.ProfileName

                if($From -eq $null)
                {
                    try
                    {
                        $ResetTime = Get-ItemProperty -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlan\$ProfileName -Name ResetTime -ErrorAction Stop | Select-Object -ExpandProperty ResetTime
                        $From_determined = [datetime]::FromFileTime($ResetTime)
                    }
                    catch
                    {
                        $From_determined = [datetime]::FromFileTime(0)
                    }
                }
                else
                {
                    $From_determined = $From
                }

                if($To -eq $null)
                {
                    $To_determined = Get-Date
                }
                else
                {
                    $To_determined = $To
                }

                $usage = $ConnectionProfile.GetLocalUsage($From_determined, $To_determined)

                $op = '' | select Name,Received,Sent,From,To

                $op.Name = $ProfileName
                $op.Received = $usage.BytesReceived
                $op.Sent = $usage.BytesSent
                $op.From = $From_determined
                $op.To = $To_determined

                $op

            }
        }
    }
}

Чудово, дякую за дослідження та відповідь!
Сатьядхіт Бхат

1

Ця стаття MSDN - найкраще, що я могла знайти від Microsoft: http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx . Він розповідає про те, як можна зателефонувати за допомогою програми, але не там, де зберігаються належні дані. Я не збираюся все це копіювати і вставляти, бо не знаю, на якій мові ви хочете програмувати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.