判断Windows是否为虚拟机

2019-08-06  本文已影响0人  MrSunday_8955

主流的虚拟机大概有以下几种:
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
}
上一篇下一篇

猜你喜欢

热点阅读