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”带来了大量的警钟.这将是一个痛苦的消息,抱歉成为持票人.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |