【问题标题】:Windows file associations done properly?Windows 文件关联是否正确完成?
【发布时间】:2015-07-01 15:28:59
【问题描述】:

我想将我的应用程序设置为在 Windows 中具有文件关联(额外的复杂情况:文件扩展名可能与其他一些不相关的应用程序冲突)。处理这种情况的最佳方法是什么?最有可能的是,用户不会同时拥有两者,但如果他们拥有,那么最好的方法是什么?

我一直在网上搜索 stackoverflow 和其他各种网站,并且对如何做到这一点有一个基本的想法(我已经尝试过了,它确实有效),但找不到关于如何最好地完成的明确参考.

一些参考资料说将条目放入注册表中的 HKEY_CLASSES_ROOT。有人说不要这样做,而是将其放入 HKEY_LOCAL_MACHINE\Software\Classes 中。

应用程序是否还需要在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths 或 HKEY_CLASSES_ROOT\Applications 下注册(参考关于 HKEY_CLASSES_ROOT 与 HKEY_LOCAL_MACHINE\Software\Classes 的讨论,这甚至是技术上正确的位置吗?以上)?

我还看到一些页面建议设置“CurVer”和“OpenWithProgids”,但我不确定它们会有什么帮助。

我发现我可以创建

HKEY_LOCAL_MACHINE\Software\Classes.aaa (默认)AAAapp

HKEY_LOCAL_MACHINE\Software\Classes\AAAapp (默认) AAAapp DefaultIcon "%mypath%\to\AAAappIcon.ico" shell\open\command "%mypath%\to\AAAapp.exe" "%1"

它有效。我没有创建 App Paths 或 Applications 注册表项,因此这些项似乎不会影响这一点。同样,上述内容似乎没有规定很好地处理系统上已经存在“.aaa”文件扩展名的关联的情况。

感谢任何指导!

【问题讨论】:

    标签: windows installation registry file-association


    【解决方案1】:

    老问题 - 7.5 个月没有答案 - 但以下可能会帮助未来的谷歌人(比如我)。

    HKEY_CLASSES_ROOT 是

    组合视图
    • HKEY_LOCAL_MACHINE\Software\Classes
    • HKEY_CURRENT_USER\Software\Classes。

    您不应该写入 HKEY_CLASSES_ROOT,只需以只读方式使用它。此外,推荐的做法是写入 HKEY_CURRENT_USER\Software\Classes 而不是 HKEY_LOCAL_MACHINE,除非您确实需要为所有用户设置内容。

    Microsoft 的文档看起来相当冗长和分散,所以我花了很长时间才确定我需要为我自己的小应用程序做些什么。但是,最好先尝试官方文档(除非有人可以为我们指出一个可以更好地解释事情的地方),然后如果无法理解,请稍后提出问题。

    Microsoft 关于该领域的文档的入口点是“桌面应用技术”https://msdn.microsoft.com/library/windows/desktop/bg126469.aspx

    对于文件类型注册,它引导我在“实施自定义文件格式” https://msdn.microsoft.com/en-us/library/windows/desktop/ff521657(v=vs.85).aspx

    从那里进入“文件类型和文件关联”,从那里开始,子菜单涵盖了您需要的所有内容(以及更多内容)。

    记得写入 HKCU\Software\Classes。似乎在文档中编写 HKEY_CLASSES_ROOT (HKCR) 时,它通常只是作为一种方便的方式来引用 (HKCU|HKLM)\Software\Classes。

    关于“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths”或“HKEY_CLASSES_ROOT\Applications”:

    MS 文档解释了它们与您已使用的密钥的关系。 (我还在摸索,所以无法提供更直接的解释。)

    有些地方似乎说“应用程序路径”是首选,但实际上您可能需要同时使用两者,因为“应用程序路径”实际上只涉及 路径,以及诸如 SupportedTypes 和 FriendlyAppName 仅在“HK(LM|CU)\Classes\Applications”中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多