विंडोज 8 वाईफ़ाई पर अनुमानित डेटा उपयोग को कहां संग्रहीत करता है?


19

मुझे गलती से पता चला कि विंडोज 8 में, यदि आप स्टार्ट स्क्रीन इंटरफेस से पहले से कनेक्टेड वायरलेस नेटवर्क पर राइट-क्लिक करते हैं, तो डेटा का उपयोग दिखाने का विकल्प है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

यह डेटा कहाँ संग्रहीत किया गया है? क्या PowerShell / WMI के माध्यम से इसे लाना संभव है? मेरे लिए एक उपयोग मामला डेटा उपयोग के आधार पर स्वचालित अलर्ट सेटअप करने के लिए होगा - मैं वर्तमान में अधिक विस्तृत ब्रेकडाउन के लिए नेटवर्क्स का उपयोग करता हूं , लेकिन एक त्वरित चेतावनी के लिए, यदि मैं उपयोग प्राप्त कर सकता हूं, तो स्वचालित मार्ग बहुत मदद करेगा।


1
मुझे आश्चर्य है कि यह केवल अनुमान क्यों है ।
डेर होकस्टाप्लर

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Network\DataUsage\Wlanसंबंधित दिखता है। मैं अब भी खोज रहा हूं।
बॉब

यह संबंधित है, लेकिन मेरे शोध से पता चलता है कि यह पूरी तरह से संबंधित है, जहां वास्तविक अनुमान संग्रहीत है, वहां कुछ भी नहीं देखा है। इस समय एक परिणाम को छोड़कर उस reg कुंजी के लिए Google पर कुछ भी नहीं है।
MDMoore313

1
@ ऑलिवर साल्ज़बर्ग शायद वे इसे अनुमानित कहते हैं क्योंकि यह आपके आईएसपी की तुलना में एक अलग संख्या दिखा सकता है। संभवत: वे कुछ प्रतिशत पर अनुमान लगा रहे हैं भूमि के ऊपर के रूप में अच्छी तरह से (जो विंडोज आकलन नहीं कर सकते, जैसा कि इसके जा रहा है कहीं जोड़ा)
derobert

जवाबों:


3

मुझे याद है जब आपने पहली बार यह सवाल पूछा था, लेकिन मैं आखिरकार इसे समझ पाया। आशा है कि यह अभी भी आप या किसी और के लिए उपयोग कर रहा है!

आप इस डेटा तक पहुँच प्राप्त कर सकते हैं GetLocalUsage ConnectionProfile ऑब्जेक्ट की विधि , जो WLAN / WAN कनेक्शन (यानी SSID) हैं। GetLocalUsage दो DateTime पैरामीटर लेता है और निर्दिष्ट अंतराल के दौरान भेजे गए और प्राप्त किए गए डेटा की मात्रा युक्त एक DataUsage ऑब्जेक्ट देता है । आप NetworkInformation की GetConnectionProfiles विधि को कॉल करके ConnectionProfile ऑब्जेक्ट की सूची प्राप्त कर सकते हैं ।

मैंने निम्न फ़ंक्शन को लिखा है जो डेटा को पुनः प्राप्त करता है और एक ऑब्जेक्ट देता है। एक या एक से अधिक SSIDs को पास करें और वैकल्पिक रूप से 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

            }
        }
    }
}

महान, अनुसंधान और उत्तर के लिए धन्यवाद!
Sathyajith भट्ट

1

यह MSDN आलेख सबसे अच्छा मैं Microsoft से पा सकता है: http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.connectivity.datausage.aspx । यह आपको बताता है कि आप इसे किसी प्रोग्राम से कैसे कॉल कर सकते हैं, लेकिन यह नहीं कि डेटा कहाँ संग्रहीत है। मैं यह सब कॉपी और पेस्ट करने नहीं जा रहा हूं क्योंकि मुझे नहीं पता कि आप किस भाषा में प्रोग्राम करना पसंद करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.