尝试通过 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
{
}
}