Windows 8, tahmini veri kullanımını Wifi üzerinden nerede saklıyor?


19

Yanlışlıkla, Windows 8'de, daha önce bağlanmış bir kablosuz ağı Başlangıç ​​ekranı arayüzünden sağ tıklarsanız, tahmini veri kullanımını göstermenin bir seçeneği olduğunu keşfettim.

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Bu veriler nerede saklanıyor? Bunu PowerShell / WMI ile almak mümkün mü? Benim için bir kullanım durumu, veri kullanımına dayalı otomatik uyarılar ayarlamak olacaktır - Şu anda daha ayrıntılı bir arıza için Networx kullanıyorum , ancak hızlı bir uyarı için, kullanımı getirebilirsem, otomatik rota çok yardımcı olacaktır.


1
Neden sadece tahmin edildiğini merak ediyorum .
Der Hochstapler

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlanilgili görünüyor. Hala araştırıyorum.
Bob

İlişkili, ancak araştırmam bunun tamamen GUI ile ilgili olduğunu, gerçek tahminin nerede saklandığı hakkında hiçbir şey görmediğini gösteriyor. şu anda bir sonuç dışında o reg anahtar için google hiçbir şey.
MDMoore313

1
@OliverSalzburg Muhtemelen buna ISS'nizden farklı bir sayı gösterebileceği için tahmini olarak adlandırıyorlar. Muhtemelen yüzde bir yükü de tahmin ediyorlar (Windows'un başka bir yere eklendiği gibi
ölçemediği

Yanıtlar:


3

Bu soruyu ilk sorduğunuzda hatırlıyorum, ama sonunda anlamaya başladım. Umarım hala sizin ya da bir başkası için yararlıdır!

Bu verilere , WLAN / WAN bağlantıları (yani SSID'ler) olan ConnectionProfile nesnelerinin GetLocalUsage yöntemini çağırarak erişebilirsiniz . GetLocalUsage iki DateTime parametresi alır ve belirtilen aralıkta gönderilen ve alınan veri miktarını içeren bir DataUsage nesnesi döndürür . NetworkInformation GetConnectionProfiles yöntemini çağırarak ConnectionProfile nesnelerin bir listesini alabilirsiniz .

Verileri alıp bir nesneyi döndüren aşağıdaki işlevi yazdım. Bir veya daha fazla SSID'ye geçin ve isteğe bağlı olarak DateTime'ları başlatın ve durdurun:

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

            }
        }
    }
}

Harika, araştırma ve cevap için teşekkürler!
Sathyajith Bhat

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.