zoukankan      html  css  js  c++  java
  • 判断程序是否在VMWare内运行

    转自http://blog.csdn.net/seny/archive/2010/02/26/5327615.aspx
                                         判断程序是否在VMWare内运行
            现在有许多用户都喜欢用虚拟机来测试他们的软件,以避免对真实机器环境造成损害。但是在虚拟机中,有些功能是受限,甚至不可能完成的,因此,需要在程序中判断虚拟机的环境,如果程序在虚拟机内运行,则就要把虚拟机下不能使用的功能屏蔽掉。

    判断程序是否在VMWare虚拟机内,可以用以下代码来完成:

    view plaincopy to clipboardprint?
    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;  
    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测试通过。

  • 相关阅读:
    1691: [Usaco2007 Dec]挑剔的美食家
    poj2892 Tunnel Warfare
    P3369 【模板】普通平衡树 Treap
    Splay的用法
    P3165 [CQOI2014]排序机械臂
    P2286 [HNOI2004]宠物收养场
    P3391 【模板】文艺平衡树(Splay)新板子
    3224: Tyvj 1728 普通平衡树(新板子)
    P2515 [HAOI2010]软件安装
    CF 219 D:Choosing Capital for Treeland(树形dp)
  • 原文地址:https://www.cnblogs.com/ljl_falcon/p/2354050.html
Copyright © 2011-2022 走看看