stackflow都没个靠谱的说法,最后还是csdn上看到的。转一个备用。http://bbs.csdn.net/topics/390135443
由于直接执行Mircosoft Office Document Imaging 可以成功运行程序并进行抓图识别,而在VS代码中则不行,因此分析不会是MODI组件本身的问题;又将某确定的tif文件带入程序测试,故排除截图后生成临时文件的权限问题;推测可能是win7系统导致。
在网上查阅后得到线索,有可能是数据执行保护(DEP)阻碍了代码中MODI对象的运行,需要在计算机-高级-数据执行保护中进行修改,然而进行修改后问题依旧。又考虑到直接执行MODI并无问题,估分析可能是DEP对VS工程产生了阻碍。于是在刚才的地方解除对VS工程.exe的DEP保护,结果提示“该程序无法取消DEP”,可见关键问题在此!
于是继续查找DEP相关资料,找到文章《Windows_7下的DEP(数据执行保护)》,其中介绍了如何在win7下完全解除对所有程序的DEP保护,描述如下:
——我们可以使用微软提供的命令行工具bcdedit.exe来编辑BCD文件。我们在命令提示符下运行不带有任何参数的bcedit命令,可以看到当前的启动配置,如图所示显示了在Windows 7下运行bcdedit的结果,其中最后一行显示nx OptIn,表示当前的DEP保护级别为1,如果显示为OptOut则表示当前的EDP保护级别为2。如果我们要关闭EDP,只需将nx设置为Always0ff即可。在命令行下执行命令“bcdedit /set nx alwaysoff”,重启系统后Windows 7的EDP就关闭了。反之,如果要开启所有服务和应用程序的DEP,执行命令“bcdedit /set nx alwayson”就可以了。
最后执行完上述操作后,再运行vs工程,OCR running error就消失了!