1. 程式人生 > >.net 判斷程式是否執行在虛擬機器上 (方法2)

.net 判斷程式是否執行在虛擬機器上 (方法2)

前面寫過一種方法是用第三方的dll來判斷是否執行在虛擬機器中,但是那個方法只能在32位下執行。
http://blog.csdn.net/fhl812432059/article/details/51142409
下面再介紹一種判斷方法是用系統硬碟ID來判斷。該方法也只能判斷VMware虛擬機器,無法判斷其他的虛擬機器

    /// <summary>
    ///  獲取硬碟序列號
    /// </summary>
    /// <returns></returns>
    public static string GetHardDiskID()
    {
        string hdid = "";//硬碟序列號 
        ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
        ManagementObjectCollection moc = cimobject.GetInstances();
        foreach (ManagementObject mo in moc)
        {
            hdid = mo.Properties["model"].Value.ToString();
        }
        return hdid.ToString();
    }

如果程式在虛擬機器中執行的話,這個值是以VMware開頭的,通過這種方法就可以判斷程式是否在虛擬機器中運行了!

方法侷限性:有軟體可以修改虛擬機器的硬體資訊,如果修改硬體資訊,不以VMware開頭的話,就無法正確判斷是否在虛擬機器中了(我只是知道可以修改硬體資訊,但是修改硬體資訊後,是否還是以VMware開頭沒有驗證,大家有誰驗證後,麻煩請給我留言,O(∩_∩)O謝謝!