【问题标题】:property sheet handlers on Windows 10Windows 10 上的属性表处理程序
【发布时间】:2015-12-01 02:42:10
【问题描述】:

我开发了一个自定义属性表处理程序,可以在 Windows 7 和 Windows 8 上正常工作。在 Windows 10 上,它没有加载。 Windows 10 中的 shell 扩展注册似乎发生了变化,但我还没有找到具体细节。

我的属性表处理程序从 jpeg 文件(.jpe 或 .jpeg)中读取自定义 XMP 数据。如果我注册一个新的文件类型(即 .photo 扩展名)并为此注册我的处理程序,它会按预期工作:

HKCR\.photo\shellex\PropertySheetHandlers\{my class id}

但是,如果我为现有的 jpeg 文件类型(jpegfile)注册它,它不会被加载:

HKCR\jpegfile\shellex\PropertySheetHandlers\{my class id}

同样,此问题仅发生在 Windows 10 上。当在 Windows 7 和 8 上的 HKCR\jpegfile 密钥类型下注册时,处理程序工作正常。有人知道 Windows 10 可能发生了什么变化吗?

【问题讨论】:

    标签: windows shell-extensions


    【解决方案1】:

    尝试如下注册:

    HKCR\.jpeg\shellex\PropertySheetHandlers\{my class id}
    HKCR\.jpg\shellex\PropertySheetHandlers\{my class id}
    

    【讨论】:

      【解决方案2】:

      HKEY_CLASSES_ROOT好像是deprecated

      HKEY_CLASSES_ROOT (HKCR) 键包含文件扩展名 关联和 COM 类注册信息,例如 ProgID, CLSID 和 IID。 它主要是为了与 16 位 Windows 中的注册表

      请将您的密钥移至HKEY_LOCAL_MACHINE\Software\Classes(或HKEY_CURRENT_USER\Software\Classes,当前用户)。

      【讨论】:

      • HKEY_CLASSES_ROOT 只是 HKEY_LOCAL_MACHINE\Software\Classes 的快捷方式。在一个条目中自动反映在另一个中
      • 其实是一个组合键,代表HKEY_LOCAL_MACHINE\Software\ClassesHKEY_CURRENT_USER\Software\Classes中的值。因为这对用户是透明的,所以您可能不知道您实际更改的是哪个键:如果您将值写入 HKEY_CLASSES_ROOT 下的键,并且该键已经存在于 HKEY_CURRENT_USER\Software\Classes 下,系统将存储那里的信息,而不是在 HKEY_LOCAL_MACHINE\Software\Classes 下。
      • 感谢您的澄清。唉,这个建议没有奏效(在 HKEY_CURRENT_USER\Software\Classes 而不是 HKEY_LOCAL_MACHINE\Software\Classes 下添加键)。
      • 您是否制作了单独的 32 位和 64 位版本的处理程序 DLL? Windows/文件资源管理器将加载与其自身位数匹配的任何 DLL,因此对于 64 位资源管理器,您需要一个 64 位 DLL,对于 32 位资源管理器,您需要一个 32 位 DLL。
      猜你喜欢
      • 1970-01-01
      • 2015-11-03
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 2012-09-15
      • 2017-01-24
      • 2018-08-07
      相关资源
      最近更新 更多