文件.reg​

文件.reg​

背景

当我单击此链接时,Windows 会尝试使用应用程序打开它。这是因为 URI 的结构为: twitter://realDonaldTrump/status/266259787405225984位于twitter链接的协议位置。

当我在 Windows 10 UWP(如“Messenger”)中单击此链接时,由于 Windows 将其注册为应用 URI,因此无法解析它。这很合理,但我希望对此行为进行一些控制。

问题

如何在“打开方式”对话框中添加“将 URI 复制到剪贴板”按钮?下面是我正在谈论的图片:

在此处输入图片描述

答案1

我不知道如何将其添加到“打开方式”对话框中,但可以将复制 URI 作为该协议的默认操作。只需对注册表进行一些修改即可。在大多数情况下,文件和协议关联正是您从命令行运行某些内容时输入的内容。

文件和协议关联存储在HKEY_CLASSES_ROOT注册表配置单元中,并从中读取。(有关文件关联的更多信息,这个答案可能会对你有帮助。)

文件.reg

下面列出了您想要执行的操作的一个非常简单的协议定义:

; twitter_protocol.reg
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\twitter]
@="URL:twitter"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\twitter\shell]
@="open"

[HKEY_CLASSES_ROOT\twitter\shell\open]

[HKEY_CLASSES_ROOT\twitter\shell\open\command]
@="cmd /c ECHO|SET /P=%1|CLIP"

将其复制到名为的文件中twitter_protocol.reg,然后双击它以将其导入到您的注册表中。

说明

您可以在这些键中指定许多选项。在协议关联的情况下,重要的选项包括:

  • HKEY_CLASSES_ROOT\<protocol>- 之前的字符串://
  • HKEY_CLASSES_Root\<protocol>- (Default)- 协议的描述,例如“Twitter URL”。
  • HKEY_CLASSES_ROOT\<protocol>- URL Protocol- 指定这是一个协议关联,应该留空。
  • HKEY_CLASSES_ROOT\<protocol>\shell\open\command- (Default)- 指定打开关联应用程序的命令行。

在这种情况下,我们将命令行选项设置为cmd /c ECHO|SET /P=%1|CLIP,让我们将其分解一下:

  • cmd /c ...将打开一个命令提示符窗口来运行您的命令。ECHOSET是命令行例程,而不是独立的应用程序,所以我们需要运行命令提示符才能使用它。
  • ECHO|SET /P=%1是一种过于复杂的说法,“打印输入时末尾不添加额外的新行”。
    • ECHO它会将其后写入的所有内容打印到命令提示符中,并在其后添加一个额外的行。
    • |SET /P=是一种用于删除换行符的技巧。SET通常用于设置环境变量,但在这种情况下我们不使用它。|如下所述。
    • %1是输入。在本例中是twitter://realDonaldTrump/status/266259787405225984
  • |被称为“管道字符”,这意味着我们将获取其之前的输出并将其作为其之后的输入。
  • CLIP将读取管道输入(而不是使用它不支持的命令行参数)并将其复制到剪贴板。

相关内容