您的位置:首页 > 其它

解决 无法获取“”控件的窗口句柄。不支持无窗口的 ActiveX 控件

2014-03-25 10:40 176 查看
原文链接:http://yanghao831207.blog.163.com/blog/static/302198620116120495647/

在win7 下面调用ActiveX  出现如题错误。xp下测试正常。

编译环境: VS2008 

编程语言:CSharp 

系统版本:Windows7 

OCX控件:无窗口的OCX控件

 根据微软官方的说法,导致这个错误是由于Windows的保护机制,在编译后的exe的PE头部,有一个DEP(Data Execution Prevention)的功能。需要将这个功能关闭,就能正常运行了,试了试成功了。

 

下面是如何打开 DEP 的方法:

关闭Wind XP/Vista/Win7的DEP数据执行保护汇总

数据执行保护 (DEP) 是一种Windows安全机制,从Windows版本顺序上看是从Windows XP SP2开始引入,通过监视程序以确保它们使用的系统内存是安全的,帮助防止操作系统受到病毒和其他安全威胁的破坏。这个功能从设计上来讲是非常不错的,可以保护系统安全,但同时也可能会影响某些程序甚至整个系统的正常运行。甚至在日常的操作中带来很大麻烦,因为很多用户根本不知道如何取舍或关闭。看来DEP功能还是有诸多的完善工作需要完成,天缘本文就来综合一下DEP在常见几种操作系统下的开启和关闭方法做个汇总。

一、Windows XP下开始/关闭数据执行保护(DEP)的方法

XP模式下开启和关闭DEP有两种方法,一种是部分开启/关闭,另一种是长期开启/关闭。

第一种方法是为了方便于用户倾向于使用DEP功能,但又不想整体关闭,由于DEP功能上的欠缺可能会引起某些程序的非正常运行甚至崩溃现象时,可以通过以下方法进行设置:在桌面“我的电脑”点击鼠标左键——属性——高级——性能设置选项,即可看到下图:



针对某些程序关闭DEP保护,只需要点击上图中的“为下列程序之外的所有程序启动DEP”,然后点击添加按钮,找到您所信任的程序执行文件,添加即可,然后重启计算机即可生效。

第二种方法,全部关闭DEP保护功能,可以在上图中,点击关闭DEP(不推荐),然后重新启动计算机即可。也可以通过直接修改Boot.ini文件达到彻底关闭数据执行保护的目的,在 WinXP SP2/SP3系统目录下找到Boot.ini文件。有这么一行(其他驱动器类似):

......="Microsoft Windows XP Professional"=OPTIN /FASTDETECT /USEPMTIMER /noexecute

修改NoExecute参数为NoExecute=AlwaysOff,然后保存即可,相当关闭DEP功能和EVP和EDB。实际上,在上述第一种方法中如何修改关闭DEP选项,系统会自动修改boot.ini文件的启动项,实现结果相同。

二、Windows Vista下开始/关闭数据执行保护(DEP)的方法

在Vista下关闭DEP方法也很简单,只需要按照以下步骤操作即可:

1、新建一个文本文件mod.txt,然后输入:

bcdedit.exe/set {current} nx AlwaysOff

pause

2、保存后,再重命名为bat文件mod.bat;

3、然后在文件上鼠标右键以管理员身份运行即可,看到运行结果。

4、关闭该命令运行窗口,然后重新启动计算机即可生效

另外,对于没有管理员权限的用户执行修改DEP数据保护设置可能会出现下图提示:



避免方法,请提权后或采用本文描述方法执行。

三、Windows 7下开始/关闭数据执行保护(DEP)的方法

方法同Vista的修改方法。

补充:

1、该方法同样适用于Windows Server 2008,操作方法相同。

2、如果要开启DEP数据保护,只需要把AlwaysOff改成AlwaysOn即可

名词解释:

DEP——为微软的软件上层协调模块,协助CPU执行数据保护,为Data Excute Protection缩写

EVP——AMD CPU的防病毒技术,为Ehanced Virus Protection缩写

EDB——Intel CPU的防病毒技术,为Excute Disable Bit缩写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐