C++ 如何在Windows10版本1709上注册文件夹的预览处理程序?
我最近注意到,我的文件夹预览处理程序没有在Windows10(1709版)上实例化。这是令人惊讶的,因为该处理程序在从Windows7到Windows10版本1607的系统上运行得非常好 预览处理程序在ProgIDC++ 如何在Windows10版本1709上注册文件夹的预览处理程序?,c++,com,windows-shell,shell-extensions,C++,Com,Windows Shell,Shell Extensions,我最近注意到,我的文件夹预览处理程序没有在Windows10(1709版)上实例化。这是令人惊讶的,因为该处理程序在从Windows7到Windows10版本1607的系统上运行得非常好 预览处理程序在ProgID目录下注册: HKEY_CLASSES_ROOT Directory shellex {8895b1c6-b41f-4c1c-a562-0d564250836f} (Default) = [REG_SZ]
目录下注册:
HKEY_CLASSES_ROOT
Directory
shellex
{8895b1c6-b41f-4c1c-a562-0d564250836f}
(Default) = [REG_SZ] {1F176730-9812-47D8-8163-35D7C1CA0FBF}
可以通过监视Windows资源管理器的注册表访问来跟踪工作系统和非工作系统之间的差异。当1607系统上需要预览文件夹时,Process Monitor会生成预期输出:
另一方面,在1709系统上,HKEY\U CLASSES\U ROOT\目录
项下根本没有注册表访问权限。这就是为什么我怀疑不同的行为(不幸的是)与我的处理程序代码没有任何关系,并且在最近的Windows版本中,对文件夹的预览处理程序支持可能已被删除
我还使用ProgIDFolder
而不是Directory
进行了测试,但没有成功,并通过在AllFileSystemObjects
注册处理程序,验证了预览处理程序是否得到了实例化,至少在文件上是这样
有没有人有在最新Windows版本上运行文件夹预览处理程序的经验?您有没有查看事件日志以查看是否显示任何内容?也许MS转而要求装入shell实例化的COM对象的DLL进行签名(顺便说一句,这纯粹是猜测),但日志中可能会显示一些内容。@SoronelHaetir:事件日志中没有可疑的内容。我认为,资源管理器甚至不能检查DLL的签名,因为资源管理器必须通过访问注册表来确定哪个DLL注册为预览处理程序。简单地说,这个注册表访问完全丢失了。另一方面,为文件注册预览处理程序不会有问题。谢谢你的建议。