How to detect if my application is running in a virtual machine?

前端 未结 10 1292
青春惊慌失措
青春惊慌失措 2020-11-28 05:52

How can I detect (.NET or Win32) if my application is running in a virtual machine?

10条回答
  •  悲哀的现实
    2020-11-28 05:57

    public static bool isVirtualMachine()
    {
        const string MICROSOFTCORPORATION = "microsoft corporation";
        const string VMWARE = "vmware"; 
    
        foreach (var item in new ManagementObjectSearcher("Select * from Win32_ComputerSystem").Get())
        {
            string manufacturer = item["Manufacturer"].ToString().ToLower();
            // Check the Manufacturer (eg: vmware, inc)
            if (manufacturer.Contains(MICROSOFTCORPORATION) || manufacturer.Contains(VMWARE))  
            {
                return true;
            }
    
            // Also, check the model (eg: VMware Virtual Platform)
            if (item["Model"] != null)
            {
                string model = item["Model"].ToString().ToLower();
                if (model.Contains(MICROSOFTCORPORATION) || model.Contains(VMWARE)) 
                {
                    return true;
                }
            }
        }
        return false;
    }
    

提交回复
热议问题