我正在开发一个实现IPropertyStore和IInitializeWithFile的属性处理程序,在Win 8.1 x64上进行testing。 属性名称以前使用prop.exe正确注册的.propdesc文件添加到系统中。
我使用PROCMON.EXE来监视当我重新索引我的文件在磁盘上的事件。 SearchPrototocolHost.exe加载协议处理程序,用IInitializeWithFile(文件中的属性似乎从文件加载OK)正确初始化它,然后继续使用PSCreatePropertyStoreFromObject检索IPropertyStore接口,并开始从文件中检索属性。
那么没有其他的事情发生,IPropertyStore的方法永远不会被调用。 相反,SearchPrototocolHost.exe在文件上发出一个CreateFile,用“Open Reparse Point”重新编入索引,在获取QueryRemoteProtocolInformation时失败,closures文件,然后继续下一个文件进行索引。
为什么我的属性处理程序失败(这是一个安全问题等?)?
它看起来像需要添加到注册表项:“HKLM”“SOFTWARE \微软\的Windows \ CurrentVersion \壳体扩展\批准”{My_CLSID}其中My_CLSID是我的属性处理程序的GUID!
我不知道这是否是使用IInitializeWithFile的处理程序的特定要求作为额外的安全预防措施。
经过三个星期,我的头撞墙,现在我可以“听到”IPropertyStore方法(使用MessageBeep …),当他们被资源管理器调用。 没关系,他们崩溃的资源管理器,至少我知道,IPropertyStore没有被封锁!