0

尝试通过 wmi 从远程机器获取正确的内核总数。结果并不总是正确的。当有多个 cpu 并且它只返回 1 个 proc 的计数而不是两者时,这似乎是一个问题。

            query = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
        searcher = new ManagementObjectSearcher(scope, query);

        queryCollection = searcher.Get();
        foreach (ManagementObject obj in queryCollection)
        {
            string manufacturer = obj["Manufacturer"].ToString().ToLower().Replace(',', ' ');
            row["Device Name"] = obj["name"].ToString().Replace(',', ' ');
            row["Manufacturer"] = manufacturer;
            row["Model"] = obj["Model"].ToString().Replace(',', ' ');
            row["Cores"] = obj["NumberOfProcessors"].ToString();

            if (manufacturer.Contains("microsoft corporation") || manufacturer.Contains("vmware") || manufacturer.Contains("virtualbox"))
            {
                row["Virtual"] = true;
            }
        }

        query = new ObjectQuery("SELECT * FROM Win32_Processor");
        searcher = new ManagementObjectSearcher(scope, query);

        queryCollection = searcher.Get();
        foreach (ManagementObject obj in queryCollection)
        {
            try
            {
                //2008 + only
                row["Cores"] = obj["NumberOfLogicalProcessors"].ToString();
            }
            catch
            {
            }
         }
4

1 回答 1

2

这条线

row["Cores"] = obj["NumberOfLogicalProcessors"].ToString();

是错误的。

您需要将找到的所有核心加在一起,而不仅仅是使用最后一个条目。

于 2013-10-22T15:16:14.860 回答