Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Windows10版本1709上注册文件夹的预览处理程序?_C++_Com_Windows Shell_Shell Extensions - Fatal编程技术网

C++ 如何在Windows10版本1709上注册文件夹的预览处理程序?

C++ 如何在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]

我最近注意到,我的文件夹预览处理程序没有在Windows10(1709版)上实例化。这是令人惊讶的,因为该处理程序在从Windows7到Windows10版本1607的系统上运行得非常好

预览处理程序在ProgID
目录下注册:

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版本中,对文件夹的预览处理程序支持可能已被删除

我还使用ProgID
Folder
而不是
Directory
进行了测试,但没有成功,并通过在
AllFileSystemObjects
注册处理程序,验证了预览处理程序是否得到了实例化,至少在文件上是这样


有没有人有在最新Windows版本上运行文件夹预览处理程序的经验?

您有没有查看事件日志以查看是否显示任何内容?也许MS转而要求装入shell实例化的COM对象的DLL进行签名(顺便说一句,这纯粹是猜测),但日志中可能会显示一些内容。@SoronelHaetir:事件日志中没有可疑的内容。我认为,资源管理器甚至不能检查DLL的签名,因为资源管理器必须通过访问注册表来确定哪个DLL注册为预览处理程序。简单地说,这个注册表访问完全丢失了。另一方面,为文件注册预览处理程序不会有问题。谢谢你的建议。