我已经阅读了许多Stack Overflow问题以及我能找到的所有相关Microsoft文档,但我找不到确切的答案。
我正在将我的程序注册为Windows 10中特定扩展的默认应用程序。我在注册表中添加了以下条目:
HKCUSoftwareClassesmy-program.ext
HKCUSoftwareClasses.ext(Default)
=my-program.ext
HKCUSoftwareClasses.extOpenWithProgIdsmy-program.ext
一切正常,关联成功创建
但是,我不明白OpenWithProgIds
的目的。我认为它代表了此扩展的替代应用程序列表,但是,即使没有将my-program.ext
添加到OpenWithProgIds
,我的程序仍然存在于"打开方式"列表中以及通过.ext(Default)
注册的所有以前的应用程序中。
似乎有某种缓存包含了特定扩展的所有先前关联的程序。但如果是这样,我们为什么需要OpenWithProgIds
呢?这种行为可能是在Windows10中引入的,OpenWithProgIds
被认为是过时的。
如有任何想法或澄清,我将不胜感激。
根据文档,OpenWithProgIDs
子密钥的目的是为用户提供更好的体验。
摘录:
您可以通过将版本化的ProgID作为值添加到HKEY_CLASSES_ROOT<扩展>\OpenWithProgids键。此注册表项包含与文件扩展名关联的备用ProgID的列表。与列出的ProgID关联的应用程序显示在Open withProduct Name子菜单中。如果在
OpenWithList
和OpenWithProgids
键中都指定了相同的应用程序,则操作系统会合并重复的应用程序。
根据本文为文件名扩展指定文件处理程序:
OpenWithProgids密钥仅在Windows XP中受支持。因为其他操作系统会忽略此键,所以不要将其用作文件处理程序的唯一注册。使用此密钥可以在Windows XP中提供更好的用户体验。