gpt4 book ai didi

windows - 使用自定义协议(protocol)打开 URL - 语法错误?

转载 作者:可可西里 更新时间:2023-11-01 09:25:35 25 4
gpt4 key购买 nike

我在使用自定义协议(protocol)通过浏览器打开本地文件时遇到了一些实际问题。现在,在您为自定义协议(protocol)向我开枪之前,此 Web 应用程序将在封闭的 Intranet 环境中运行,因此我可以完全控制为所有用户添加这些协议(protocol)。该应用程序目前运行良好,但我被要求绕过文件的“打开/保存”对话框,因为它“烦人”且“耗时”(是的,我知道......我试图告诉他们),所以在这里我在未知领域!

这是一个不起作用的例子(我在这个例子中使用记事本在带有 IIS7 的 Server 2008 R2 中测试它):

使用 Registering an Application to a URL Protocol 上的信息我已将以下内容添加到注册表中:

HKEY_CLASSES_ROOT
opentxt
(Default) = "URL:opentxt Protocol"
URL Protocol = ""
DefaultIcon
(Default) = "C:\Windows\System32\notepad.exe,1"
shell
open
command
(Default) = "C:\Windows\System32\notepad.exe" "%1"

所以现在,理论上,它应该像在我的 html 中添加以下链接一样简单

<a href="opentxt://localhost/openme.txt">Open File</a> 

它几乎可以正常工作 - 单击链接,它会立即打开记事本,但是我在记事本中看到了这个错误。

The filename, directory name, or volume label syntax is incorrect

该文件肯定存在于该位置(我可以使用 http://localhost/openme.txt 读取它),并且我尝试以多种不同的格式表示链接,例如如所述here但就是无法让它工作。

有什么地方出错了吗?

最佳答案

很简单,您混淆了两种不同的协议(protocol)。

您的协议(protocol) - 以及您传递给记事本的 Url - 是 opentxt://localhost/openme.txt。该文件的工作位置是 http://localhost/openme.txt。这两个不一样!

HTTP 是操作系统 native 理解的协议(protocol),因此,记事本可以将 HTTP Url 传递给操作系统,操作系统将依次使用端口 80 连接到 localhost 并发送对该资源的请求。文件被返回,记事本有它的数据。这一切都在定义 HTTP 行为的操作系统库中处理。

您的 opentxt 协议(protocol)没有这种支持,除非您对其进行编码。记事本不知道如何处理它 - 所以您会看到错误消息。

一种轻松处理此问题的方法是创建您自己的处理协议(protocol)的应用程序。如果您有一个通过注册表连接的 opentxtHandler.exe,它会被传递给 opentxt:// url,然后可以适本地处理它。这可能只是意味着将协议(protocol)从 opentxt 更改为 http,然后将其传递给记事本 - 或者它可能更复杂。

关于windows - 使用自定义协议(protocol)打开 URL - 语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com