gpt4 book ai didi

windows - 如何在 Windows 中的自定义协议(protocol)处理程序中转义 & 符号

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

我按照此 link 创建了一个自定义协议(protocol)处理程序。情况是我需要打开一个只能在 IE 中打开的链接,并且可能包含多个查询参数,并且应该从我们在 Chrome 上运行的网络应用程序在 IE 中打开(这真的很烦人)。经过多次尝试和失败,我设法找到了 snippet将条目添加到 Windows 注册表配置单元并创建 .reg 文件并运行:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Classes\ie]
"URL Protocol"="\"\""
@="\"URL:IE Protocol\""
[HKEY_CURRENT_USER\Software\Classes\ie\DefaultIcon]
@="\"explorer.exe,1\""
[HKEY_CURRENT_USER\Software\Classes\ie\shell]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open]
[HKEY_CURRENT_USER\Software\Classes\ie\shell\open\command]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:ie:=%% & call \"C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe\" %%myvar%% & exit /B"

它有效,但问题是如果链接包含多个查询参数,则除了第一个之外的所有查询参数都会被省略,我确信这是因为 Windows 命令行中的字符编码:

e.g. some_example_url?query1=value1&query2=value2&query3=value3 is becoming some_example_url?query1=value1

我找到这个solution但它也不起作用。如何正确转义 & 字符,以便可以使用所有查询参数在 IE 上打开它。 (如前所述,链接是由 Chrome 上运行的网络应用程序触发的)

编辑:触发的代码:

fileClicked(url) {
// url should be escaped with ^
const escapedUrl = url.replace(/&/gi, '^&');
const ie = document.createElement('a');
// ie: scheme => custom protocol handler
// host computer (windows) should add custom protocol to windows registry
ie.href = `ie:${escapedUrl}`;
ie.click();
}

编辑2@muzafako 修复了脚本,只需替换最后一行,如下所示:

@="cmd /c set url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"

最佳答案

您根本不需要解码查询参数。我试图找到此问题的解决方案并看到此 answer 。它对我有用。只需将命令行更改为:

@="cmd /c set url=\"%1\" & call set url=%%url:ie:=%% & call start iexplore -nosessionmerging -noframemerging %%url%%"

关于windows - 如何在 Windows 中的自定义协议(protocol)处理程序中转义 & 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58178298/

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