Windows 8は、Wifi経由の推定データ使用量をどこに保存しますか?


19

Windows 8では、以前に接続したワイヤレスネットワークをスタート画面のインターフェイスから右クリックすると、推定データ使用量を表示するオプションがあることを偶然発見しました。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

このデータはどこに保存されますか?PowerShell / WMI経由でこれを取得することは可能ですか?私のユースケースは、データ使用量に基づいて自動化されたアラートを設定することです-私は現在、より詳細な内訳のためにNetworxを使用していますが、迅速なアラートのために、使用量を取得できる場合、自動化されたルートは非常に役立ちます。


1
なぜ推定されているのだろうか。
デアホッホシュプラー

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlan関連します。まだ検索中です。
ボブ

それは関連していますが、私の研究では、それは純粋にGUI関連であり、実際の推定値が保存されている場所については何も見ていません。現時点では、1つの結果を除いて、そのregキーのgoogleには何もありません。
MDMoore313

1
@OliverSalzburgおそらく彼らはそれをあなたのISPとは異なる数を示すかもしれないので、それを推定と呼んでいます。おそらく彼らはいくつかのオーバーヘッドも推測しています(他の場所に追加されているため、Windowsは測定できません)
-derobert

回答:


3

あなたが最初にこの質問をしたときのことを覚えていますが、私はついにそれを理解することに取りかかりました。それがあなたや他の誰かにまだ役に立つことを願っています!

このデータにアクセスするには、WLAN / WAN接続(SSID)であるConnectionProfileオブジェクトのGetLocalUsageメソッドを呼び出します。GetLocalUsageは2つのDateTimeパラメーターを取り、指定された間隔で送受信されたデータの量を含むDataUsageオブジェクトを返します。NetworkInformationのGetConnectionProfilesメソッドを呼び出すことにより、ConnectionProfileオブジェクトのリストを取得できます。

データを取得してオブジェクトを返す次の関数を作成しました。1つ以上の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の記事は、私がマイクロソフトから見つけることができる最善の方法です:http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx。プログラムからどのように呼び出すことができるかを示していますが、適切なデータが保存されている場所は示していません。あなたがプログラムしたい言語がわからないので、すべてをコピーして貼り付けるつもりはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.