如何在C#中知道该程序在运行XP SP2的Mac上的Parallels上运行,还是在运行Windows 7的Mac上的VmWare上运行

GenZiy

我正在使用以下代码来指示代码是否在虚拟机上执行。

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");
                        }
                    }
                }
            }
nh43de

在VMware Fusion上运行此命令可获得:

制造商:vmware,inc。
型号:VMware虚拟平台

基于,看起来您可以安全地检查Manufacturer或Model是否包含字符串“ parallels”以确定它是否在并行环境中运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档