判断程序是否在VMWare内运行
Posted 朝闻道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断程序是否在VMWare内运行相关的知识,希望对你有一定的参考价值。
现在有许多用户都喜欢用虚拟机来测试他们的软件,以避免对真实机器环境造成损害。但是在虚拟机中,有些功能是受限,甚至不可能完成的,因此,需要在程序中判断虚拟机的环境,如果程序在虚拟机内运行,则就要把虚拟机下不能使用的功能屏蔽掉。
判断程序是否在VMWare虚拟机内,可以用以下代码来完成:
function IsRunInVMWare(out ErrMsg: string): Boolean;
begin
Result := False;
try
asm
push edx
push ecx
push ebx
mov eax, ‘VMXh‘
mov ecx, $0A
mov edx, ‘VX‘
in eax, dx
cmp ebx, ‘VMXh‘
setz [Result]
pop ebx
pop ecx
pop edx
end;
except
on E: Exception do
ErrMsg := E.Message;
end;
end;
本段代码在Delphi2009下编译通过,VMWare 5/6测试通过。
以上是关于判断程序是否在VMWare内运行的主要内容,如果未能解决你的问题,请参考以下文章