上下文
对于给定的文件扩展名,我需要找到文件关联的ProgID(?)(例如,Word.DocumentFor.docx)。我需要他(a)识别特定的关联软件(例如Adobe与Nuance相比)并进行相应处理,然后他们才能打开文档,以及(b)使Outlook显示虚拟文件的正确图标(消息类IPM.Document.[ProgID]
)。
当前解决方案
我只是在HKEY_CURRENT_ROOT[extension]
上读取注册表项的(Default)
条目
问题
在某些机器上,对于某些文件类型,HKCR中的(Default)
条目为空。,但是,Windows资源管理器(shell)会显示相应的图标,并且在打开文件时肯定有一个工作文件关联。
很明显,我没有使用正确的方法来检索文件关联。我是否缺少一个ASSOCSTR,可以传递给AssocQueryString以返回此信息,或者我忽略的MSDN上关于文件关联的任何其他调用或标准文档?
自从Windows Vista(我认为)以来,用户就可以通过密钥覆盖正常的HKCR文件关联系统
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\扩展名\UserChoice\
您需要检查此键的ProgId
值,如果存在,则使用该值,并仅将HKCRextension
视为默认回退。