判断程序是否在VMWare内运行

现在有许多用户都喜欢用虚拟机来测试他们的软件,以避免对真实机器环境造成损害。但是在虚拟机中,有些功能是受限,甚至不可能完成的,因此,需要在程序中判断虚拟机的环境,如果程序在虚拟机内运行,则就要把虚拟机下不能使用的功能屏蔽掉。

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

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测试通过。

时间: 2024-10-10 16:35:03

判断程序是否在VMWare内运行的相关文章

正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码

当我在窗体初始化的时候,调用了一个外部的dll,它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一.Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况.这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用. 大致理解:就

判断程序是否运行在管理员权限下

1.提出两个概念(成立条件是系统是Vista后续版本,这是因为引入了UAC) 一个是运行程序的账号是管理员账号 另一个是当前运行环境是管理员环境 2.判断程序是否运行在管理员权限,直接使用函数IsUserAnAdmin就可以判断 #include <ShlObj.h> #include <tchar.h> int _tmain() { BOOL bIsAdmin = IsUserAnAdmin(); if(bIsAdmin) _tprintf_s(_T("Run As a

正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的 抛出一个“正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常强大的调试助手,MDA.Loaderlock 是其中之一.Loaderlock检测在一个拥有操作系统loader lock的线程上运行托管代码的情况.这样做有可能会引起死锁,并且有可能在操作系统加载器初始化DLL前被使用. 大致理解

CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法

这些天重装了电脑Win10系统,安装了CAD2012和VS2012,准备进行软件开发.在调试程序的时候,CAD没有进入界面就抛出 “正试图在 os 加载程序锁内执行托管代码.不要尝试在 DllMain 或映像初始化函数内运行托管代码” 查看网上相关文章说是要关掉 异常--Managed Debugging Assistants,但是仍然不可以使用. 前段时间有过将软件数据库放到C盘,变成数据库只读无法写入数据的经历.是不是CAD也只读了,无法写入调试Dll呢? 随后将CAD装到了D盘,果真问题解

C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)

#region//开机自动运行        private void CB_Auto_CheckedChanged(object sender, EventArgs e)        {//CB_Auto是一个Checkbox,IsAutoRun 是个布尔变量,用于控制是否开机运行            if (CB_Auto.Checked == true) IsAutoRun = true;            else IsAutoRun = false;            tr

C#判断程序是否以管理员运行

  /// <summary>         /// 判断程序是否是以管理员身份运行.         /// </summary>         public static bool IsRunAsAdmin()         {             WindowsIdentity id = WindowsIdentity.GetCurrent();             WindowsPrincipal principal = new WindowsPrincipa

程序长时间后台保持运行

文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间. 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态.在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除.应用程序提供特定的服务,用户可以请求后台执行时间,以提供这些服务. 判断是否支持多线程 UIDevice* device = [UIDevice

iOS开发:后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动. 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备). 活动-app处于“使用中”的状态. 后台-app不再屏幕上显示,但它仍然执行代码. 挂起-app仍然驻留内存但不再执行代码. 按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起. 在内存吃紧的时候,iphone会首先关闭那些挂起的app. 从 iOS 4 开始,应用就可以在退到后台后,

Android应用程序框架层和系统运行库层日志系统源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6598703 在开发Android应用程序时,少不了使用Log来监控和调试程序的执行.在上一篇文章Android日志系统驱动程序Logger源代码分析中,我们分析了驱动程序Logger的源代码,在前面的文章浅谈Android系统开发中Log的使用一文,我们也简单介绍在应用程序中使Log的方法,在这篇文章中,我们将详细介绍Android应用程序框架