[代码]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 标签: Delphi,Detect,VMWare,VirtualPC
posted @ 2011-07-12 17:55  ET民工[源自火星]  阅读(891)  评论(0编辑  收藏  举报