【问题标题】:IPropertyStore interface not called in a property handler未在属性处理程序中调用 IPropertyStore 接口
【发布时间】:2017-11-07 05:55:28
【问题描述】:

我正在开发一个实现 IPropertyStore 和 IInitializeWithFile 的属性处理程序,在 Win 8.1 x64 上进行测试。属性名称之前是使用使用 prop.exe 正确注册的 .propdesc 文件添加到系统的。

当我重新索引磁盘上的文件时,我使用 PROCMON.EXE 来监视事件。 SearchPrototocolHost.exe 加载协议处理程序,使用 IInitializeWithFile 正确初始化它(文件中的属性似乎可以从文件中加载)然后继续使用 PSCreatePropertyStoreFromObject 可能是为了检索 IPropertyStore 接口并开始从文件中检索属性。

然后什么都没有发生,来自 IPropertyStore 的方法永远不会被调用。相反,SearchPrototocolHost.exe 对要使用“打开重解析点”再次索引的文件发出 CreateFile,无法获取 QueryRemoteProtocolInformation,关闭文件然后继续下一个要索引的文件。

为什么我的属性处理程序失败(是安全问题等?)?

【问题讨论】:

  • 你能检查一下你的组件在哪些接口上被查询吗?是 ATL 项目吗?
  • 感谢西蒙的建议。 InitializeWithFile 被查询并采取行动,我将检查其他接口。它不是 ATL 项目,它是用 Delphi (XE6) 编写的。安东尼曾经是我的家乡,很高兴见到那里的人(27 年前离开美国)!

标签: windows search properties com handler


【解决方案1】:

看起来需要添加到注册表项: "HKLM" "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" {My_CLSID} 其中 My_CLSID 是我的属性处理程序的 GUID!

我不知道这是否是使用 IInitializeWithFile 作为额外安全预防措施的处理程序的特定要求。

在我的头撞墙三周后,现在我可以“听到” IPropertyStore 方法(使用 MessageBeep...)当它们被 Explorer 调用时。没关系他们让 Explorer 崩溃,至少我知道 IPropertyStore 没有被阻止!

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多