Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ windows 8任务管理器虚拟化选项_C++_Windows_Virtual Machine_Vmware_Parallels - Fatal编程技术网

C++ windows 8任务管理器虚拟化选项

C++ windows 8任务管理器虚拟化选项,c++,windows,virtual-machine,vmware,parallels,C++,Windows,Virtual Machine,Vmware,Parallels,我正试图找到一种方法,以编程方式检测我的程序是否在虚拟机上运行,据我所知,并行程序没有通用的方法来实现这一点 Windows 8任务管理器性能选项卡显示“虚拟化”选项,这是什么意思?当我在虚拟机中运行windows 8时,它会变为虚拟处理器和虚拟机:是的,那么windows 8如何检测到它在虚拟机中运行,windows 8如何检测到它在虚拟机中运行?是否可以通过编程方式获取此信息?我在parallels和vm ware上都试过了,都很好。你应该看看这篇有趣的文章Red Pill。。。或者,如何使

我正试图找到一种方法,以编程方式检测我的程序是否在虚拟机上运行,据我所知,并行程序没有通用的方法来实现这一点


Windows 8任务管理器性能选项卡显示“虚拟化”选项,这是什么意思?当我在虚拟机中运行windows 8时,它会变为虚拟处理器和虚拟机:是的,那么windows 8如何检测到它在虚拟机中运行,windows 8如何检测到它在虚拟机中运行?是否可以通过编程方式获取此信息?我在parallels和vm ware上都试过了,都很好。

你应该看看这篇有趣的文章
Red Pill。。。或者,如何使用(几乎)一条CPU指令检测VMM,由Joanna Rutkowska编写,该指令过去是,但现在已经死了,只能使用和
虚拟化:红色药丸还是蓝色?
编写,由
Steven McElwee编写,该指令过去也是,但现在只能查看

代码如下:

int swallow_redpill()
{
    unsigned char m[2+4], rpill[] = "\x0f\x01\x0d\x00\x00\x00\x00\xc3";
    *((unsigned*)&rpill[3]) = (unsigned)m;
    ((void(*)())&rpill)();
    return (m[5]>0xd0) ? 1 : 0;
}
如果在虚拟机中运行,则返回1,否则返回0



编辑:在现代CPU上,它可能会返回误报,并将其加在一起以确保结果是真实的。

在VMware上,您可以检查CD驱动器供应商-应该是“VMware”或“VMware,Inc.”或类似的内容

我不知道VMware workstation,但在ESXi上,您的MAC地址通常以“00:50:56”开头。你也可以利用这个

看一看。也许你可以把它移植到Windows


也许可以帮助您。

在我真正的Windows 8上,任务管理器也显示“虚拟化:已启用”。我相信这表明处理器支持虚拟化,而不是操作系统在虚拟机中运行。