如何在不改变默认浏览器的情况下,更改 .url 文件的打开方式

我的常用和默认浏览器是 Edge,但最近发现 Edge 在打开特别长的网页时,比如美股在 SEC 的 filings,会很容易无响应,要是有 Ctrl+F 搜索的操作就更容易了,而 Firefox 则没出现这个问题

例子:百济神州的一季报 https://www.sec.gov/Archives/edgar/data/1651308/000165130823000068/bgne-20230331.htm

我平常会把这些报告的网址以 .url 的文件形式保存在本地,方便自己很快从本地找到用浏览器打开看,也省存储空间

现在想将其关联到 Firefox,但是右键 .url 文件 - 属性,发现根本不能更改打开方式……

有什么办法能实现我说的需求呢?目前只能是手动打开 Firefox,把文件拖拽到窗口里

似乎 Candy 可以?但是好像学起来也挺麻烦的,有没有更方便一点的办法?

也想到了用 .lnk 快捷方式的办法,但我的 .url 文件挺多的,一个一个手动转换很麻烦,有没有批量转换的方法?

发现个叫 Earl 的软件,可以把 .url 批量转换为 .lnk
IDEA: Batch Editor for URL and LNK Properties - DonationCoder.com

然而……

转换出来的 lnk 为什么也不能设置“目标”呢?

有了个 bon 不 jour 的曲线救国方法:

从网上下了个文本文件批量修改器,批量把 .url 文件中的 URL=替换为 "C:\Program Files\Mozilla Firefox\firefox.exe" ,把文件重命名为 .bat 文件即可

开头的[InternetShortcut]甚至都不用去掉,除了运行时会先弹出来个命令行的黑框外没毛病

2 Likes

……你没有理解我的需求 :sweat_smile:

Windows 好像不允许更改 URL 文件的打开方式。我用 FileTypesMan 查询后发现,URL 文件的打开方式在注册表中的存储路径为:

计算机\HKEY_CLASSES_ROOT\InternetShortcut\shell\Open\Command

但该注册表项似乎不能编辑,修改后都会报错。

不过您可以用 FileTypesMan 在 URL 文件的右键菜单中新建一个动作 “用 Firefox 打开”,动作命令如下:

"C:\Program Files\Mozilla Firefox\firefox.exe" %l

但是即使将该动作设置为默认,双击 URL 文件后仍是用系统默认的浏览器打开链接。

附:FileTypesMan 的下载链接

新发现,因为我用 Total Commander,在 TC 里右键 .url 文件是可以选择打开方式的,然而选择使用 Firefox 默认打开后,Firefox 会报错,不能加载我的配置文件

另外若选择用C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe打开,则会像打开个 TXT文件一样,必须选择Internet浏览器这一项打开才能使 Edge 正确打开网址

我的为啥新建不了 Action 呢?直接新建没反应,选择复制自带的一个 Actions 然后再粘贴,结果报错Error 5: 拒绝访问

URL 文件通常包含 https 网址,用于访问网页。 但是,URL 文件也可以包含 mailto: 、 tel: 、 file: 或其他 URL,这就是你无法修改url关联方式的原因。

读取所有的 .url, 然后生成一个 html文件.

每次用firefox 打开这个html, 然后点击对应的链接 .

一个标准的.url 文件内容大致如下

[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
IDList=
URL=http://www.baidu.com/

你只要读取包含 URL 的那行数据, 写入 html 即可.

编程的话, 很简单的几行代码. 实在不会, 问问 AI 也可以.

或者也可以写一个有GUI的程序, 直接拖动到这个软件快捷方式上就行.

1 Like

或许是因为您没有以管理员身份运行 FileTypesMan。

我今天下午写了一个软件.

大概功能如下,

配置文件里写入

url= firefox.exe

然后拖动 url 文件到软件上, 或者桌面快捷方式上即可.

另外, 我测试的时候发现, msedge 自身居然不支持 url文件.


可以写一段ahk代码
功能是, 当在文件管理器(包括桌面)界面, 拦截鼠标双击事件,
检查当前选中的项目是否后缀名为 url
如果为url,则通过指定浏览器来打开,
否则发送双击事件

我待会试试,应该挺好写,有段现成的代码

可以换个思路,还是用 edge 当作默认浏览器,然后用书签打开火狐,例如FirefoxURL-308046B0AF4A39CB://:https://baidu.com
火狐的 URL Protocol 可以去注册表里找,默认路径是 计算机\HKEY_CLASSES_ROOT\FirefoxURL-。然后批量替换你本地的 url,加上前缀保存为书签导入 edge。

搞定 ,修改ahk代码中的两处 E:\miniapp\Firefoxsunbox\Firefox\firefox.exe 为你的目标浏览器路径即可。

使用方法,在文件管理器或桌面,鼠标中键 单击url文件,即可通过你自定义的浏览器打开。
【倒是也可以写成拦截鼠标双击,但是那样副作用太大,所以我写成了用鼠标中键】

#InstallMouseHook

#IfWinActive ahk_class CabinetWClass ; 文件管理器
mButton::
click
clipboard:=""
sleep,300
sendinput,^+c
clipwait
lastname := SubStr(clipboard, -2)
url:="url"
if lastname = url
{
IniRead,web, %clipboard%, InternetShortcut, URL
run E:\miniapp\Firefoxsunbox\Firefox\firefox.exe %web%
}
else
click,M
return

#IfWinActive ahk_class Progman ; 桌面
mButton::
click
clipboard:=""
sleep,300
sendinput,^+c
clipwait
lastname := SubStr(clipboard, -2)
url:="url"
if lastname = url
{
IniRead,web, %clipboard%, InternetShortcut, URL
run E:\miniapp\Firefoxsunbox\Firefox\firefox.exe %web%
}
else
click,M
return

是用管理员身份运行的

感谢各位手搓大佬,不过感觉还是我这曲线救国的方法最方便了……

因为平常用 TC,手基本一直放在键盘上,可以非常方便地敲几下键盘就立马索引到想打开的文件,然后回车一下打开

对我而言,@dog 兄的方式如果调整一下会比我的笨方法更好:
Shift + Enter 代替原先的鼠标中键单击,不但能够按需用 Firefox 打开,也不影响继续用 Edge 打开

我来研究下怎么监视 TC,以及监视 Shift + Enter
————————————————————————————
啊,发现自己安的是 AHK2,得再多花点功夫了

写了个 AHK2 的脚本,但是有一些问题:

  1. Shift 键似乎在运行后是一直按着的状态
  2. 假如文件的路径是 C:\abc def\ghi jkl.url,那么这个字符串就会被中间的空格分割成几串打开多个标签页,如何才能将其合并一起打开呢?
  3. 会多启动一个浏览器窗口,如何在原有浏览器窗口中直接新标签页打开?
HotIfWinActive "ahk_exe totalcmd.exe"
Hotkey "Shift & Enter", myFuncForOpeningURLInFirefox
myFuncForOpeningURLInFirefox(ThisHotkey)
{
    Sleep 100
    SendInput("^3") ; TC 文件管理器中 Ctrl + 3 复制路径及文件名
    Sleep 100
    extension := SubStr(A_Clipboard, -3) ; 检查文件扩展名
    if (extension = "url") {
        Run "C:\Program Files\Mozilla Firefox\firefox.exe " A_Clipboard ; 用 Firefox 打开 URL 文件
    }
}

又多照着 dog 兄的代码抄了点,这回 OK 了,没看到啥其他问题,就是 Firefox 可能有病,如果没有现存 Firefox 窗口的时候去运行,经常会提示用安全模式启动,蠢死了

image

HotIfWinActive "ahk_exe totalcmd.exe"
Hotkey "Shift & Enter", myFuncForOpeningURLInFirefox
myFuncForOpeningURLInFirefox(ThisHotkey)
{
    SendInput("^3") ; TC 文件管理器中 Ctrl+3 复制路径及文件名
    extension := SubStr(A_Clipboard, -3) ; 检查文件扩展名
    if (extension = "url") {
        web := IniRead(A_Clipboard, "InternetShortcut", "URL")
        Run "C:\Program Files\Mozilla Firefox\firefox.exe " web
    }
}

能支持命令行吗?我现在用 AHK 脚本去运行 Firefox,经常会提示用安全模式启动…… 用你的软件倒没出现过这种情况
我想用命令行调用,因为手常放在键盘上,用命令行更方便

支持命令行.

openwith 文件路径