سلام
یکی از قفل های ایرانی از کد زیر برای تشخیص محیط ماشین مجازی استفاده میکنه :
internal static bool Z64216988()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_ComputerSystem");
string str2 = string.Empty;
string str = string.Empty;
foreach (ManagementObject obj2 in searcher.Get())
{
str2 = obj2["Manufacturer"].ToString().ToLower();
if (str2.Contains("microsoft corporation"))
{
if (obj2["Model"] == null)
{
return true;
}
if (!obj2["Model"].ToString().ToLower().Contains("surface"))
{
return true;
}
}
if (((str2.Contains("red hat") | str2.Contains("vmware")) | str2.Contains("virtual")) | str2.Contains("qemu"))
{
return true;
}
if (obj2["Model"] != null)
{
str = obj2["Model"].ToString().ToLower();
if (((str.Contains("kvm") | str.Contains("vmware")) | str.Contains("virtual")) | str.Contains("qemu"))
{
return true;
}
}
}
return false;
}
خب کد بالا متد های Manufacturer , Model را از کلاس Win32_ComputerSystem با استفاده از WQL پرس و جو میکنه که همانطور که در خروجی کد میبینید میشه محیط مجازی رو تشخیص داد.
لینک های مرتبط :
بحث در مورد (WQL(WMI Query Language
WMI Code Creator v1.0
اما سوالی که واسه خودم پیش امده اینکه چطور میشه جوابی که از اجرای query میگیره رو عوض کرد ؟ یا اینکه این مشخصات کجا ذخیره میشن ؟ ...