Win 11 Regedit-从应用程序设置 HTTP / HTTPS 启动的默认应用程序(例如 npm run serve)

Win 11 Regedit-从应用程序设置 HTTP / HTTPS 启动的默认应用程序(例如 npm run serve)

我希望当 Windows 应用调用打开 Web 浏览器时打开特定的 Web 浏览器。例如,我见过各种特定于 Chrome 的解决方案,但我对特定于 Chrome 的解决方案不感兴趣。

许多解决方案建议编辑注册表

HKEY_CLASSES_ROOT\http\shell\open\commandHKEY_CLASSES_ROOT\https\shell\open\command

以反映所需应用程序的 .exe。我看到我当前的注册表项有

(Default) REG_SZ "C:\path"

path指向未使用的 exe 的位置(例如C:\portable\waterfox\waterfox.exe)。

也就是说,使用的是 MS Edge。之所以有这个条目,是因为我曾经选择过 Waterfox 作为默认应用,但现在不再选择了,那是几周前的事了,之前我还想使用其他默认应用。

也是HKEY_CLASSES_ROOT\http\shell\open\command第二个名字

DelegateExecuteREG_SZ其值为{17FE9752-0B5A-4665-84CD-569794602F5C}

使用 Find 命令,我发现它{17FE9752-0B5A-4665-84CD-569794602F5C}存在于许多其他默认的 shell 打开命令中,例如

IE.AssocFile.{extension}其中有DelegateExecute REG_SZ值为{17FE9752-0B5A-4665-84CD-569794602F5C}

其中 是(Default)"C:\Program Files\Internet Explorer\iexplore.exe" %1并且有几个(Default)REG_SZ 值为"C:\Program Files\Internet Explorer\iexplore.exe" %1

就我而言,无论这些条目如何,MS Edge 都会启动。我推测这是因为 Edge 现在处理了原本会启动 Internet Explorer 的命令。

我还没有看到其他讨论涉及DelegateExecute所提议解决方案的价值。

将这些可执行文件路径更改为我首选的 .exe 位置是否安全?{17FE9752-0B5A-4665-84CD-569794602F5C}此实例中该值引用的是什么?

您建议我进行哪些更改才能使 Win 11 应用程序打开我想要的“Web 浏览器”文件类型的 exe?

此致。

答案1

如果你能保证你需要安装浏览器的位置——我认为这实际上是你最大的问题——你可以随时创建自己的自定义协议,在该协议下,你HKEY_CLASSES_ROOT将单独激活你选择的浏览器,而不管本地设置或微软对操作系统的干预

您可以使用绝对路径和常规REG_SZ字符串值,或者将别名添加%BROWSER_PATH_ALIAS%为环境变量,然后使用REG_EXPAND_SZ(默认)字符串值进行扩展

%1如果你希望将 URL 参数作为命令行参数传递给浏览器,则同一路径可以带有后缀

HKEY_CLASSES_ROOT\protocol_name
    (Default) = "URL:protocol_name Protocol" / Description of your choice
    REG_SZ - URL Protocol = ""
    
    shell\open\command
        (Default) = "absolute/aliased path to Browser_Executable"

然后,您可以在用户级别添加 URL 关联HKEY_CURRENT_USER,也可以在机器级别添加 URL 关联HKEY_LOCAL_MACHINE

两者都有相同的SOFTWARESOFTWARE\Classes必要的钥匙

浏览器图标可以引用浏览器文件夹中的图标文件或浏览器自己的可执行文件,Windows 可以从中获取图标

HKEY_LOCAL_MACHINE\SOFTWARE
    Browser_Company
        Browser_Name
            Capabilities
                URLAssociations
                    REG_SZ - protocol_name = "Browser_Name"

    Classes
        Browser_Name
            (Default) = "URL:protocol_name Protocol" / Description of your choice
            REG_SZ - URL Protocol = ""
            
            Application | In case you decide to add extra Browser_Company details
                REG_SZ - ApplicationCompany = "Browser_Company"
                REG_SZ - ApplicationDescription = "Browser_Extended_Name"
                REG_SZ - ApplicationName = "Browser_Name"
                ApplicationIcon = "absolute/aliased path to Browser_Icon"

            DefaultIcon
                (Default) = "absolute/aliased path to Browser_Icon"

            Shell\Open\Command
                (Default) = "absolute/aliased path to Browser_Executable"

        RegisteredApplications
            REG_SZ - Browser_Name = "SOFTWARE\Browser_Company\Browser_Name\Capabitilies"

下面的最后一个键RegisteredApplications是您希望此协议关联显示在“设置”应用程序 -> 应用程序 -> 默认应用程序 -> 按协议列出的默认应用程序”部分中的主要指针

关于键的主要部分HKEY_CLASSES_ROOT已经存在于我当前的项目中,其余的配置我从中学到的StackOverflow 答案

相关内容