我正在使用以下代码来指示代码是否在虚拟机上执行。
using (var searcher = new ManagementObjectSearcher("Select * from Win32_ComputerSystem"))
{
using (var items = searcher.Get())
{
foreach (var item in items)
{
string manufacturer = item["Manufacturer"].ToString().ToLower();
Console.WriteLine("Manufacturer: " + manufacturer);
Console.WriteLine("Model: " + item["Model"].ToString());
if ((manufacturer == "microsoft corporation" && item["Model"].ToString().ToUpperInvariant().Contains("VIRTUAL"))
|| manufacturer.Contains("vmware")
|| item["Model"].ToString() == "VirtualBox")
{
Console.WriteLine("Manufacturer: " + manufacturer);
Console.WriteLine("Model: " + item["Model"].ToString());
}
}
}
}
Console.Read();
但是除此之外,我还必须知道它是Parallel还是VnWare。任何的想法?谢谢
根据提供的答案,最终代码将是这样,它对我有效ok:
using (var searcher = new ManagementObjectSearcher("Select * from Win32_ComputerSystem"))
{
//TODO: Have to verify the difference between Parallel and Vm
using (var items = searcher.Get())
{
foreach (var item in items)
{
string manufacturer = item["Manufacturer"].ToString().ToLower();
string model = item["Model"].ToString().ToLower();
if (manufacturer.Contains("parallels") && model.Contains("parallels"))
{
Console.WriteLine("Parallels Detected");
}
else if(manufacturer.Contains("vmware"))
{
Console.WriteLine("VMWARE Detected");
}
}
}
}
在VMware Fusion上运行此命令可获得:
制造商:vmware,inc。
型号:VMware虚拟平台
基于此,看起来您可以安全地检查Manufacturer或Model是否包含字符串“ parallels”以确定它是否在并行环境中运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句