禁止 Chrome 每次打开外部应用程序时都要求确认

禁止 Chrome 每次打开外部应用程序时都要求确认

我们已经将 chrome 配置为tel:使用 Skype 打开链接。一台计算机在单击电话链接后不会直接打开 Skype,而是询问是否应打开 Skype(在弹出窗口中)。

我尝试重置 Chrome,并尝试将处理程序更改为其他软件,以测试问题是否出在 Skype 上。但 Chrome 似乎通常会在打开外部应用程序之前要求确认。

我们如何配置 Chrome 来不是一遍又一遍地要求确认?这是在 Windows 10 上。

答案1

现在可以使用 Chrome 79 以上版本来实现。得益于Reddit 链接从@Kropotoff 之前的回答来看,您可以通过更新系统设置恢复“始终在关联应用程序中打开这些类型的链接”选项。

对于 Windows:

应用“外部协议对话框显示始终打开复选框”注册表策略

或者编辑注册表并添加REG_DWORD注册表项为:

Software\Policies\Google\Chrome\ExternalProtocolDialogShowAlwaysOpenCheckbox

对于 macOS:

defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true

至少在 Mac 上,你似乎需要退出并重新启动 Chrome,该选项才可用。

另一种方法

除了启用复选框,然后启动 Chrome 以选中复选框并确保其保留在 Chrome 配置文件中之外,似乎还可以通过命令行将特定协议处理程序 URI 列入白名单。这对 Selenium 和其他自动化很有帮助,这意味着 URI 无需用户干预即可打开,您无需预先配置浏览器。

假设您的协议处理程序是myprotocol1://whatevermyprotocol2://whatever,您可以在 Mac 上执行此操作。如果您选择这种方式,似乎不需要费心设置上面的复选框。

defaults write com.google.Chrome URLAllowlist -array 'myprotocol1://*' 'myprotocol2://*' 'myprotocol3://*'

Chrome 85 及以上版本支持名称“URLAllowlist”,并且它是 Chrome 100+ 所必需的;早期版本的 Chrome(15-85)也支持使用“URLWhitelist”代替“URLAllowlist”,但 URLWhitelist 已被弃用并被删除。

我还没有在 Windows 上尝试过,但看起来有关于URLAllowlist 的企业策略页面

答案2

对于 Windows 来说,简单的修复方法是创建一个包含以下内容的 .reg 文件并运行它:

(适用于 Chrome 和 Chromium Edge)

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

答案3

Linux 解决方案

sudo mkdir -p /etc/opt/chrome/policies/{managed,recommended}
echo '{"ExternalProtocolDialogShowAlwaysOpenCheckbox": true}' | sudo tee /etc/opt/chrome/policies/managed/protocol_open.json > /dev/null

如果您使用 chromium 而不是 chrome 然后使用/etc/chromium而不是/etc/opt/chrome

无需重新启动。

Chromium 管理员文档

答案4

我一直无法显示复选框。但是,我可以通过添加 ExternalProtocolDialogShowAlwaysOpenCheckbox 设置和 Edge URLAllowlist 和 Chrome URLWhitelist 来抑制对话框。配置这两个后,链接就可以顺利运行。我对注册表进行了以下更改。一个用于 Chrome,一个用于 Edge。

我将 Skype 放在了下面显示的 URL 列表中;但是我使用了特定于我的组织的另一个协议。

对于 Edge:(这似乎仅适用于基于 Chromium 构建的新 Edge)

[HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\URLAllowlist]
"1"="Skype://*"

[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Edge]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

对于 Chrome:

[HKEY_CURRENT_USER\Software\Policies\Google\Chrome\URLWhitelist]
"1"="Skype://*"

[HKEY_CURRENT_USER\SOFTWARE\Policies\Google\Chrome]
"ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001

相关内容