gpt4 book ai didi

windows - 如何为 Electron 应用程序设置 ProgId?

转载 作者:行者123 更新时间:2023-12-03 12:26:19 28 4
gpt4 key购买 nike

我创建了一个 Electron 应用程序。在 Windows 8 之后,将应用程序设置为默认邮件客户端需要更改以下位置的注册表值:

计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto\UserChoice

由于我使用 Electron 生成器来构建我的应用程序并使用 nsis Windows 的目标,我在哪里可以创建/设置/查看 ProgId我的应用程序?如何创建多个 ProgId s 如果有可能吗?

最佳答案

您不能像那样覆盖关联。
UserChoice (和 FileExts ) key 是无证的,你不应该写信给他们。

因为人force themselves并忽略“What if two programs did this?”的问题,微软已经让以编程方式设置类型/应用程序的默认关联变得越来越困难。

如果您查看 UserChoice 内部在最新版本的 Windows 上,您还会看到 Hash值(value)。如果 ProgId值与哈希值不匹配 Windows 将忽略您接管关联的尝试。只有 ControlPanel/Settings UI 可以成功更改这些系统上的关联。

在企业环境中,您可以使用 DISM/GPO .普通用户安装的应用程序无法执行此操作,您唯一的选择是遵循 Microsoft guidelines :

在 HKEY_CLASSES_ROOT 中以正常记录的方式注册您的关联。

此外,您还可以:

  • WinVista & Win7 : 你可以用 IApplicationAssociationRegistration 强制自己接口(interface)(不推荐)。
  • Win8 :询问用户是否要更改关联,如果他们确认您可以调用 IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI .
  • Win10 : 调用IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUIdisplay a help-popup指导用户如何改变他们的关联。
  • LaunchAdvancedAssociationUI可以像这样在 NSIS v3+ 中使用:
    !include LogicLib.nsh
    !include Win\COM.nsh
    Section
    !insertmacro ComHlpr_CreateInProcInstance ${CLSID_ApplicationAssociationRegistrationUI} ${IID_IApplicationAssociationRegistrationUI} r0 ""
    ${If} $0 P<> 0
    ${IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI} $0 '("Internet Explorer")' ; Replace with your registered application name
    ${IUnknown::Release} $0 ""
    ${EndIf}
    SectionEnd

    关于windows - 如何为 Electron 应用程序设置 ProgId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53047014/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com