0

C# プロジェクトで Windows パフォーマンス モニター クラスを使用して、ネットワーク カード経由で送信されたバイト数などを測定していますが、すべて問題ないようです。ネットワーク インデックス番号を使用して、パフォーマンス データの記録に使用するネットワーク インターフェイスを決定しています。コマンド プロンプトでネットワーク インデックス番号を確認できます (netsh int ipv4 show int)

ただし、vpn に接続し、vpn を参照するようにネットワーク インデックス番号を変更しました。パフォーマンス モニター「nextValue()」を読み込もうとすると、例外が発生します。

だから私の質問は、「System.Diagnostic.PerformanceCounters」を使用して、VPN から送信されたパケットなどを取得できますか、またはこれを行う別の方法はありますか?

4

1 に答える 1

2

powershell パフォーマンス カウンターを使用してみてください。強力な機能があります...

パワー シェル コマンド (インポート カウンター) の方法ガイドは、こちらにあります。

http://ss64.com/ps/

それらがどのように呼び出されるかを確認するために、以下にいくつかのサンプルコードを追加しました。

private static void LoadBLG(string CounterPath)
        {
            PowerShell ps = PowerShell.Create();
            ps.AddCommand("import-counter");
            ps.AddArgument(CounterPath);

            Console.WriteLine(CounterPath);
            Console.WriteLine("------------------------");

            foreach (PSObject result in ps.Invoke())
            {
                if (result.ImmediateBaseObject is PerformanceCounterSampleSet)
                {
                    PerformanceCounterSampleSet Counters = result.ImmediateBaseObject as PerformanceCounterSampleSet;
                    foreach (PerformanceCounterSample sample in Counters.CounterSamples)
                        Console.WriteLine("{0,-20}{1}",
                            sample.Path, sample.RawValue);
                }
            } // End foreach.

がんばれマシュー

于 2012-10-07T10:48:10.367 に答える