手机伺服用不了 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 一次执行多条命令

  • 思源笔记

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

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

    25355 引用 • 104713 回帖 • 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 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • openAI via Linux

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

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

  • 其他回帖
  • 你也熬夜

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

    取消新版 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

  • 都是夜猫子。哈哈。

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

推荐标签 标签

  • AWS
    11 引用 • 28 回帖 • 11 关注
  • 资讯

    资讯是用户因为及时地获得它并利用它而能够在相对短的时间内给自己带来价值的信息,资讯有时效性和地域性。

    56 引用 • 85 回帖 • 2 关注
  • Netty

    Netty 是一个基于 NIO 的客户端-服务器编程框架,使用 Netty 可以让你快速、简单地开发出一个可维护、高性能的网络应用,例如实现了某种协议的客户、服务端应用。

    49 引用 • 33 回帖 • 35 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 668 关注
  • Markdown

    Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。

    170 引用 • 1529 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    124 引用 • 74 回帖 • 1 关注
  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖 • 1 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    125 引用 • 585 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 762 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    7 引用 • 69 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 639 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖
  • 叶归
    6 引用 • 17 回帖 • 14 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    116 引用 • 54 回帖
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    173 引用 • 518 回帖
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • gRpc
    11 引用 • 9 回帖 • 92 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    298 引用 • 763 回帖
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 409 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 182 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 463 关注
  • Follow
    4 引用 • 12 回帖 • 13 关注