Delphi - VMware alól fut-e az operációs rendszer?

forráskód letöltése
Ha programból szeretnénk választ kapni arra, hogy VMware alól fut-e az operációs rendszerünk, melyen a programunkat futtatjuk, akkor a mellékelt példában készített TVMware komponens megadja erre a választ.
A mellékelt példaprogram megnyitása előtt a VMware.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használata igen egyszerű: tegyük a komponenst a Form-ra, majd futási időben olvassuk ki a Present nevű, logikai típusú property-jét, melynek értéke igaz lesz, ha az operációsrendszer VMware alól fut.
Delphi alól futtatva a programot futási hibát kaphatunk, ha nincs VMware és a Delphi-ben a Stop on Delphi Exception opció engedélyezve van. Ezt a hibát a program try - except között kezeli, így a programot önállóan futtatva nem szakad meg annak futása a hiba miatt.
A komponens Present property-jének olvasásakor fut a GetPresent nevű függvény. Ebben egy kis assembly betétet helyeztünk el, mivel egy közvetlen memória címről kell kiolvasnunk egy értéket, amit összehasonlítunk egy másikkal. Amennyiben az ellenőrzött érték megfelelő, abban az esetben a VMware jelenléte adott, így a függvény visszatérési értékét igazra állíthatjuk.
function TVMware.GetPresent: boolean;
begin
  result:=false;
{$IFDEF CPU386}
  try
    asm
      mov  eax, 564D5868h
      mov  ebx, 00000000h
      mov  ecx, 0000000Ah
      mov  edx, 00005658h
      in   eax, dx
      cmp  ebx, 564D5868h
      jne  @@exit
      mov  result, true
@@exit:
    end;
  except
    result:=false;
  end;
{$ENDIF}
end;