手机伺服用不了 file:// 链接的解决办法 2.0(兼容带空格及中文的文件名或路径)

前情提要: 手机伺服用不了 file:// 链接的解决办法 1.0

前文的方法有个缺陷,就是如果文件名或路径含有空格和中文字符,就无法打开文件或资源管理器。

本文就以上缺陷做出改进,将 cmd 命令换成了 powershell 命令,经过我一晚上的折腾,终于成功。因为采用了 powershell 命令,这就意味着本文方法只适用于 Win10 及更高版本操作系统。另外,本文方法不仅仅是手机伺服可以用,PC 端经测试同样适用。

演示视频:

以下是操作步骤:

Step 1. 参考此文,在桌面新建一个 txt 文件,内容如下:

REGEDIT4 [HKEY_CLASSES_ROOT\FileOpen] @="URL:FileOpen Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\FileOpen\DefaultIcon] @="\"C:\\Windows\\explorer.exe\"" [HKEY_CLASSES_ROOT\FileOpen\shell] [HKEY_CLASSES_ROOT\FileOpen\shell\open] [HKEY_CLASSES_ROOT\FileOpen\shell\open\command] @="powershell -windowstyle hidden \"Add-Type -AssemblyName System.Web\" ; \"$url=\\\"%1\\\"\" ; \"$url=[System.Web.HttpUtility]::UrlDecode($url)\" ; \"$url=$url.Trimstart(\\\"fileopen\\\")\" ; \"$url=$url.Trimstart(\\\"://\\\")\" ; \"$url=\\\"file:\\\"+$url\" ; explorer \"$url\""

将文件重命名为 fileopen.reg,双击运行。

Step 2. 参考此文方案二,在 %userprofile%\AppData\Local\Microsoft\Edge\User Data\AutoLaunchProtocolsComponent\组件版本\protocols.json 中增加以下内容:

{ "origins":["http://*:6806"], "protocol":"fileopen" }, { "origins":["http://*:6806"], "protocol":"cmd" },

保存。

Step 3. 重启 Edge 浏览器。

完成。

只要在思源中使用形如 fileopen://d:/images/fileopen://d:/images/screenshot.png 这样的链接,即可直接点击打开相应的文件或文件夹。

只要在思源中使用形如 fileopen://d%3a/images/fileopen://d%3a/images/screenshot.png 这样的链接,即可直接点击打开相应的文件或文件夹。(在 chrome 中必须将盘符后的冒号改为 %3a,否则打不开)


参考文献:

URL Encode/Decode

powershell - 无法在 PowerShell 中找到类型 [System.Web.HttpUtility]

Powershell 修剪操作,如文件名,字符串,结尾,开始,空格

PowerShell 一次执行多条命令

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24562 引用 • 100603 回帖 • 1 关注
4 操作
openAI 在 2024-12-23 15:29:03 更新了该帖
openAI 在 2024-03-30 16:07:15 更新了该帖
openAI 在 2024-03-27 13:31:59 更新了该帖
openAI 在 2024-03-27 13:27:42 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 你也熬夜

    1 回复
  • 都是夜猫子。哈哈。

    其实也就今天折腾这个玩意儿,不然早睡了。

  • openAI via Linux

    实现思路其实很简单,先是对 URL 进行解码,然后再进行字符串的裁剪和拼接,得到想要的参数。

    如果有人想在别的平台,比如 linux、mac 上实现的话,按照这个思路来就对了。

  • 为避免引用文章的原文失效,我将其全文复印到此处。

    取消新版 Edge/Chrome 打开外部应用时每次的提示

    作者:mmaple7 发布时间:2024-01-14

    使用新版 Edge 或 Chrome 调用外部应用时每次都会出现要打开 xxx PROTOCOL 吗的提示。除了取消提示之外,可以通过编辑注册表来自定义默认的打开方式。此外,可以使用策略组来管理浏览器的行为,包括控制外部应用程序的自动启动和协议的处理方式。

    文章参考

    Microsoft Edge 浏览器策略文档 | Microsoft Learn
    Microsoft Edge 浏览器支持的所有策略的 Windows 和 Mac 文档

    涉及其中的策略:
    79-84 版本:
    ExternalProtocolDialogShowAlwaysOpenCheckbox 在外部协议对话框中显示“始终打开”复选框

    85 版本及后续版本
    AutoLaunchProtocolsFromOrigins 定义可以从列出的源启动外部应用程序而不提示用户的协议列表

    其他相关项
    AutoLaunchProtocolsComponentEnabled 已启用自动启动协议组件(方式二的问题 1)

    方式一:使用注册表配置策略

    可以参考下面步骤,在注册表中的策略组中设置始终使用关联应用打开相关链接.

    1. 先关闭所有 Edge 或 Chrome 浏览器
    2. 新建一个文本文件,输入或粘贴下面内容,完成后保存并退出
    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 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"], \"protocol\": \"msoutlook\"}]" [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge] "AutoLaunchProtocolsFromOrigins"="[{\"allowed_origins\": [\"*\"], \"protocol\": \"msoutlook\"}]"
    1. 将文件名修改为 cancelPromptOpenExternalApp.reg,双击运行。

    说明:

    1. Chromium 79 ~ Chromium 84 版本可以通过复选框(ExternalProtocolDialogShowAlwaysOpenCheckbox)控制是否显示提示的弹窗。
    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
    1. Chromium 85 版及以后可以通过 AutoLaunchProtocolsFromOrigins 以 json 的方式更细粒度地控制协议(protocol)及该协议允许自启动的源[IP:port、域名](allowed_origins),参考
      Microsoft Edge 浏览器策略文档 | Microsoft Learn
      Microsoft Edge 浏览器支持的所有策略的 Windows 和 Mac 文档

      其中部分内容如下

    1bbf8f6953ce289576c0630eafeb0224.png

    8dfe812dc3ebd70bc64401cc5a428559.png

    方式二:使用配置文件

    Edge 打开外部应用时的提醒,可以通过“自动启动协议组件(AutoLaunchProtocolsComponent)”相关的配置文件进行控制。

    文件路径为 %userprofile%\AppData\Local\Microsoft\Edge\User Data\AutoLaunchProtocolsComponent\组件版本\protocols.json

    在 Edge 浏览器地址栏输入 edge://components/ ,可以查看组件的列表,可以找到 Edge AutoLaunch Protocols 组件的版本。

    作者的 Edge 对应组件版本如下:
    6399c3fe668aeb52ef963e577de37301.png

    因此,作者的 AutoLaunchProtocolsComponent 组件配置的路径为 C:\Users\admin\AppData\Local\Microsoft\Edge\User Data\AutoLaunchProtocolsComponent\1.0.0.8\protocols.json

    在文件中的 "allow" : [ 后追加

    { "origins":["*"], "protocol":"协议名" },

    若想要只在某网站下去除提醒,将 * 替换为网站链接。

    问题一

    如果该方式不生效,在注册表中查看 AutoLaunchProtocolsComponentEnabled 是否手动设置为不启动。参考
    Microsoft Edge 浏览器策略文档 | Microsoft Learn
    Microsoft Edge 浏览器支持的所有策略的 Windows 和 Mac 文档

    部分内容如下:
    ae1ad4cac71f306b589859d78ca795b0.png

推荐标签 标签

  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    179 引用 • 408 回帖 • 486 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 106 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 73 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 2 关注
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖
  • 京东

    京东是中国最大的自营式电商企业,2015 年第一季度在中国自营式 B2C 电商市场的占有率为 56.3%。2014 年 5 月,京东在美国纳斯达克证券交易所正式挂牌上市(股票代码:JD),是中国第一个成功赴美上市的大型综合型电商平台,与腾讯、百度等中国互联网巨头共同跻身全球前十大互联网公司排行榜。

    14 引用 • 102 回帖 • 324 关注
  • OneDrive
    2 引用 • 2 关注
  • V2Ray
    1 引用 • 15 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 679 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 170 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 93 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 685 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    36 引用 • 37 回帖 • 546 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    167 引用 • 3832 回帖 • 1 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    945 引用 • 1460 回帖 • 2 关注
  • Visio
    1 引用 • 2 回帖
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    54 引用 • 40 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 612 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    171 引用 • 414 回帖 • 377 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 7 关注