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

  • 思源笔记

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

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

    24614 引用 • 100905 回帖
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

推荐标签 标签

  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    143 引用 • 442 回帖 • 2 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    692 引用 • 535 回帖
  • 笔记

    好记性不如烂笔头。

    311 引用 • 796 回帖
  • CodeMirror
    1 引用 • 2 回帖 • 152 关注
  • 工具

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

    295 引用 • 750 回帖
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 261 关注
  • Follow
    4 引用 • 12 回帖 • 8 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注
  • 自由行
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 803 关注
  • Spring

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

    945 引用 • 1460 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 682 关注
  • Word
    13 引用 • 40 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 817 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 382 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 5 关注
  • SVN

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

    29 引用 • 98 回帖 • 687 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 27 回帖
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 22 关注
  • JRebel

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

    26 引用 • 78 回帖 • 678 关注
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    99 引用 • 367 回帖 • 3 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 4 关注