[代码]Delphi实现检测程序是否在VMWare中运行

代码转自“我在沉睡”的博客,经测试在VMWare7.0.0中能够正常检测。

function IsInsideVMWare: Boolean;

var

  rc: Boolean;

begin

  rc := False;



  try

    asm

      push   edx

      push   ecx

      push   ebx



      mov    eax, 'VMXh'

      mov    ebx, 0       // any value but not the MAGIC VALUE

      mov    ecx, 10      // get VMWare version

      mov    edx, 'VX'    // port number



      in     eax, dx      // read port

                          // on return EAX returns the VERSION

      cmp    ebx, 'VMXh'  // is it a reply from VMWare?

      setz   [rc]         // set return value



      pop    ebx

      pop    ecx

      pop    edx

    end;

  except

    on EPrivilege do rc := False;

  end;



  Result := rc;

end;

除此之外,还有些链接能够实现类似功能,甚至能够检测Virtual PC:

  1. Detect if your program is running inside a Virtual Machine
    http://www.codeproject.com/KB/system/VmDetect.aspx
  2. How to detect Virtual PC or VMWare from your program
    http://www.codegurus.be/codegurus/Programming/virtualpc%26vmware_en.htm
Technorati 标签: , , ,

你可能感兴趣的:(vmware)