如何在Windows管理器中注册新URL协议并关联应用处理指定协议
这个问题问得很到位!系统处理URL协议的逻辑其实是靠操作系统的关联配置来实现的,不同平台的具体操作方法不一样,我给你分情况拆解清楚:
Windows系统
1. 声明新的URL协议关联程序
咱们得通过修改注册表来实现,步骤很清晰:
- 打开注册表编辑器:按下
Win+R,输入regedit回车 - 在左侧导航找到
HKEY_CLASSES_ROOT,右键新建项,命名为你要的协议名(比如myapp) - 选中刚建的
myapp项,设置右侧的默认值为URL:MyApp Protocol,然后新建一个字符串值,命名为URL Protocol,值留空即可 - 继续在
myapp下新建子项:shell→open→command,把command项的默认值设为你的程序路径,格式是"C:\Path\To\Your\App.exe" "%1",这里的%1会自动把点击的URL传递给你的程序 - 测试:在浏览器地址栏输入
myapp://test,系统就会调用你的程序并传入这个URL
2. 将应用加入FTP协议的处理列表
同样通过注册表操作:
- 找到
HKEY_CLASSES_ROOT\ftp\shell,右键新建子项yourapp(你的应用标识),再在yourapp下建command子项 - 把
command的默认值设为你的程序路径加"%1",比如"C:\Path\To\Your\FTPApp.exe" "%1" - 之后用户可以通过右键FTP链接选择“打开方式”,就能看到你的应用;如果想设为默认,把
HKEY_CLASSES_ROOT\ftp的默认值改成yourapp即可
macOS系统
1. 声明新的URL协议关联程序
macOS靠应用的Info.plist配置文件来识别协议:
- 如果是打包好的
.app程序,右键选择“显示包内容”,打开Contents/Info.plist - 添加
CFBundleURLTypes数组配置,示例如下:<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>My App Custom Protocol</string> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> <!-- 这里填你的协议名 --> </array> </dict> </array> - 保存后重启应用,系统就会识别这个协议。测试可以用终端命令
open myapp://test,或者在浏览器地址栏输入该URL
2. 将应用加入FTP协议的处理列表
有两种方式:
- 图形界面操作:在浏览器中找到一个FTP链接,右键选择“打开方式”→“其他”,找到你的应用,勾选“始终用此应用打开”
- 命令行操作:先通过Homebrew安装
duti工具(brew install duti),然后执行:
其中duti -s com.yourcompany.yourapp ftp public.urlcom.yourcompany.yourapp是你的应用的Bundle ID,可以在Info.plist的CFBundleIdentifier字段找到
Linux系统
Linux桌面环境多样,但核心是通过.desktop配置文件实现,通用度很高:
1. 声明新的URL协议关联程序
- 创建一个
.desktop文件,比如myapp.desktop,放在~/.local/share/applications/(仅当前用户生效)或者/usr/share/applications/(系统全局生效) - 文件内容示例:
[Desktop Entry] Name=MyApp Exec=/path/to/your/app %u # %u用于接收URL参数 Type=Application MimeType=x-scheme-handler/myapp; # 这里填你的协议名 - 更新应用数据库:用户级执行
update-desktop-database ~/.local/share/applications/,系统级执行sudo update-desktop-database /usr/share/applications/ - 测试:用终端命令
xdg-open myapp://test,或者在浏览器输入该URL
2. 将应用加入FTP协议的处理列表
- 修改你的
.desktop文件,把MimeType字段加上x-scheme-handler/ftp;,比如:MimeType=x-scheme-handler/myapp;x-scheme-handler/ftp; - 同样更新应用数据库
- 设置默认:执行
xdg-mime default myapp.desktop x-scheme-handler/ftp,或者在桌面环境的“默认应用”设置里找到FTP选项,选择你的应用即可
内容的提问来源于stack exchange,提问作者user277911




