判断程序是否在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内运行的主要内容,如果未能解决你的问题,请参考以下文章

在 VMware 中运行 VMware?

vmware每次开机都会自动启动,怎么改??

VMware运行时“内部错误”的解决方法

vmware 打开虚拟机没反应

在 Vmware 工作站上的 Mac 中为 appstore 开发 iOS 应用程序

怎样取消VMware虚拟机开机自动运行