主流的虚拟机大概有以下几种:
VMware
Virtualbox
Virtual PC
VMLite
Kernel-based Virtual Machine(KVM)
HSSM Virtual Machine(HVM)
Red Hat Enterprise virtualization(RHEV)
Windows系统可以通过查询注册表中的SystemProductName来判断当前环境是不是虚拟机。
//查询注册表,获取SystemProductName
string GetSystemProductName() {
string strValue;
LPCTSTR lpSubKey = TEXT("SYSTEM\\ControlSet001\\Control\\SystemInformation");
GetRegValue(lpSubKey, TEXT("SystemProductName"), strValue);
return strValue;
}
bool IsVirtualMachine() {
int i;
bool isVM = false;
char VmName[6][10] = { "Virtual", "KVM", "VMware", "HVM", "RHEV", "VMLite" };
string productName = GetSystemProductName();
for(i=0;i<6;i++) {
if (productName.compare(0, string(VmName[i]).length(), VmName[i])==0) {
// Virtual
isVM = true;
break;
}
}
return isVM
}
网友评论