ykwll 发表于 2015-4-7 18:52:14

[代码]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            // set return value
pop    ebx
pop    ecx
pop    edx
end;
except
on EPrivilege do rc := False;
end;
Result := rc;
end;
  除此之外,还有些链接能够实现类似功能,甚至能够检测Virtual PC:


[*]Detect if your program is running inside a Virtual Machine
http://www.codeproject.com/KB/system/VmDetect.aspx
[*]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
页: [1]
查看完整版本: [代码]Delphi实现检测程序是否在VMWare中运行