加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 使用64位IFilter中的32位Com对象

发布时间:2020-12-15 09:22:16 所属栏目:大数据 来源:网络整理
导读:我有一个用Delphi编写的IFilter,我正试图在64位 Windows 7桌面搜索下工作. 由于它是在Delphi中开发的,我只能将其编译为32位DLL. 为了解决这个问题,我试图在Visual C中编写一个64位IFilter Dll,它在内部使用我的32Bit IFilter Com对象,使用here概述的DllSurog
我有一个用Delphi编写的IFilter,我正试图在64位 Windows 7桌面搜索下工作.

由于它是在Delphi中开发的,我只能将其编译为32位DLL.

为了解决这个问题,我试图在Visual C中编写一个64位IFilter Dll,它在内部使用我的32Bit IFilter Com对象,使用here概述的DllSurogate技术.

在测试64位控制台应用程序下,我已经完成了所有这些工作.我可以创建一个64位包装器的实例,它在内部创建32位IFilter对象并委托对它的所有调用.然后我可以检索我的文档的内容.

问题是,当我使用WDS注册时,64位包装器不能再创建32位对象. CoCreateInstance返回“服务器执行失败”(CO_E_SERVER_EXEC_FAILURE).

这就是我在64位包装器中创建32位对象的人

result = CoCreateInstance(clsid,CLSCTX_LOCAL_SERVER,IID_IFilter,(LPVOID*)&m_pFilter);

不知道为什么会这样.它是WDS中IFilters的权限限制吗?

感谢您的帮助.

解决方法

是的. IFilter在名为SearchFilterHost.exe的托管进程内运行.由于过滤器可能会打开包含恶意内容的文件,因此主机以非常有限的权限运行.肯定不会包括启动流程的能力.不知道如何覆盖这个,或者如果你甚至考虑这样做的话.谷歌搜索“searchfilterhost.exe”带来了大量的警钟.这将是一个痛苦的消息,抱歉成为持票人.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读