Process 情報の取得に関するメモ


Visual Studio 2008 , Vista で、GetProcesses() でプロセス情報を取得する際に、TotalProcessorTime などプロセッサタイムを取得しようとすると、Win32Exception により取得できない。なぜ??

var query = from proc in System.Diagnostics.Process.GetProcesses()
            orderby proc.Id
            select new
            {
                Id = proc.Id,
                processName = proc.ProcessName,
                TotalProcessorTime = proc.TotalProcessorTime
            };

foreach (var process in query)
{
    Console.WriteLine(process.Id + ":");
    Console.WriteLine(process.processName + ":");
    Console.WriteLine(process.TotalProcessorTime + ":");
}

—————–

WMI を使用すれば、取得可能。

ManagementObjectSearcher query1 = new ManagementObjectSearcher("SELECT * FROM Win32_Process");
ManagementObjectCollection queryCollection1 = query1.Get();

foreach (ManagementObject mo in queryCollection1)
{
    Console.WriteLine(mo["ProcessId"] + "\t" + mo["Name"] + "\t" +
        ":\tKernelModeTime=" + mo["KernelModeTime"] +  // in 100 nanosecond units
        ":\tUserModeTime=" + mo["UserModeTime"]);   // in 100 nanosecond units
}

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中


%d人のブロガーが「いいね」をつけました。