.net 判斷程式是否執行在虛擬機器上 (方法2)
阿新 • • 發佈:2018-12-31
前面寫過一種方法是用第三方的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謝謝!)