Delphi启动提示Error“Can’t load package Bin\dclite70.bpl”的解决方法

上个星期五在虚拟实验室Windows Server 2003里安装全新的Delphi 7.0企业版,安装方法没什么好说的,都安装过不知道多少遍了。可是这一次安装比较奇怪,安装完成之后启动Delphi7,居然显示“Can’t load package d:\delphi7\Bin\dclite70.bpl.Access violation at address……”,如下图:
以前安装同样的Delphi7没有这个问题的,而且我的Windows 2003是干净的,怎么会出现这个问题的呢?网上一搜,找到解决方法:
1、右击“我的电脑”。单击“属性”;
2、在“系统属性”中单击“高级”;
3、在“性能”中单击“设置”;
4、在“性能选项”中单击“数据执行保护”;
5、单击“添加”。选择Delphi7安装目录,然后到Bin目录下选择Delphi32.exe。
应用重启Delphi即可。全是Window2003的Data Execution Prevention(DEF数据执行保护)造成的。
那么,什么是数据执行保护 (DEP) ?
引用数据执行保护 (DEP) 是 Microsoft Windows XP Service Pack 2 (SP2) /Windows2003支持的一种处理器功能,它禁止在标记为数据存储的内存区域中执行代码。此功能也称作“不执行”和“执行保护”。当尝试运行标记的数据页中的代码时,就会立即发生异常并禁止执行代码。这可以防止攻击者使用代码致使数据缓冲区溢出,然后执行该代码。数据执行保护 (DEP) 有助于防止病毒和其他安全威胁造成破坏,它们的攻击方法是从只有 Windows 和其他程序可以使用的内存位置执行恶意代码。
也就是说,这个DEF数据执行保护是MS为了防范其系统中不知哪处的漏洞而被攻击者利用来制造数据缓冲区溢出而达到攻击入侵的目的的。而默认是执行保护的,所以给Delphi7造成这个错误。
应该说上面的回答已经很完整了,我也没什么好补充的。可是还有一个遗留的问题,就是为什么以前我在Windows 2003上安装没有这个问题呢?我一想,原因就是我以前用的Windows 2003不是原版的纯净系统,是被优化处理过的,把数据执行保护给“处理”掉了。而我现在的Windows 2003系统是Windows.Server.2003.R2.Ent.With.Sp2.CHS.VOL.MSDN,原版纯净的,所以系统的数据执行保护功能正常,才会导致Delphi的以上错误。
数据保护的确很烦人呢~呵呵~
又跟着博主长见识了~~~~=w=
[回复]
没玩过Delphi,还只会c语言
[回复]