2

wmiクエリを使用してTimeStampプロパティを返そうとすると、オブジェクト参照エラーが発生します。クイックウォッチを見ると、プロパティ自体はnullです。私はこの例をWebで見ましたが、この1つのプロパティがnullになっている理由を理解できませんが、他のすべてのクエリを実行できます。

私はWindows7マシンを使用しています

   public List<string> ReturnProcesses()
    {
        string processname;

        ulong N1 = 0;
        ulong D1 = 0;
        ulong N2 = 0;
        ulong D2 = 0;

        ConnectionOptions options = new ConnectionOptions();

        options.Impersonation = ImpersonationLevel.Impersonate;
        List<string> Processlist = new List<string>();
        ManagementScope scope = new ManagementScope("\\root\\cimv2");
        scope.Connect();
        ObjectQuery query = new ObjectQuery("SELECT IDProcess,Name,PrivateBytes,PercentProcessorTime,TimeStamp_Sys100NS FROM Win32_PerfFormattedData_PerfProc_Process");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
        ManagementObjectCollection queryCollection = searcher.Get();
        try
        {
            foreach (ManagementObject mo in queryCollection)
            {
                ulong privbytes = (ulong.Parse(mo["PrivateBytes"].ToString()) / 1024);
                processname = mo["IDProcess"].ToString() + " " + mo["Name"].ToString() + " " + mo["PercentProcessorTime"].ToString() + " " + privbytes.ToString();
                N2 = ulong.Parse(mo["PercentProcessorTime"].ToString());
                D2 = ulong.Parse(mo["TimeStamp_Sys100NS"].ToString());
                Processlist.Add(processname);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return Processlist;
    }
4

1 に答える 1

2

Win32__PerfRawData_PerfProc_Processの代わりに使用する必要がありますWin32_PerfFormattedData_PerfProc_Process

于 2013-10-16T15:07:55.550 に答える