我看到过:
http://www...
ftp://blah.blah...
file://blah.blah...
unreal://blah.blah...
mailto://blah.blah...
那个你看到的第一部分,比如 http
是什么称呼?
我能注册自己的吗?
我看到过:
http://www...
ftp://blah.blah...
file://blah.blah...
unreal://blah.blah...
mailto://blah.blah...
那个你看到的第一部分,比如 http
是什么称呼?
我能注册自己的吗?
HTTP://
、FTP://
等部分被称为URI Scheme。
你可以通过注册表注册自己的URI Scheme。
HKEY_CLASSES_ROOT/
your-protocol-name/
(Default) "URL:your-protocol-name Protocol"
URL Protocol ""
shell/
open/
command/
(Default) PathToExecutable
资料来源:https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml,http://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx
mailto:
URI方案的规范,但这与注册mailto:
方案的URI处理程序没有任何关系。操作系统根本不关心,处理该方案的程序会完成所有工作。至少据我所知,Windows以完全相同的方式处理所有URI,将URI作为参数传递给指定的处理程序。 - Kal Zekdor打开记事本并将以下代码粘贴到其中。将“YourApp”更改为您的应用程序名称。
将其保存为YourApp.reg,并通过在资源管理器中单击它来执行它。
就是这样!
REGEDIT4
[HKEY_CLASSES_ROOT\YourApp]
@="URL:YourApp Protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\YourApp\DefaultIcon]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\""
[HKEY_CLASSES_ROOT\YourApp\shell]
[HKEY_CLASSES_ROOT\YourApp\shell\open]
[HKEY_CLASSES_ROOT\YourApp\shell\open\command]
@="\"C:\\Program Files\\YourApp\\YourApp.exe\" \"%1\" \"%2\" \"%3\" \"%4\" \"%5\" \"%6\" \"%7\" \"%8\" \"%9\""
这对于每个浏览器都不同,在IE和Windows中,您需要创建他们所谓的可插拔协议处理程序。
基本步骤如下:
有关Windows详细信息,请参见MSDN上的关于异步可插拔协议的文章。 Windows SDK中也有示例。
快速搜索还显示了这篇关于Codeproject的文章:http://www.codeproject.com/KB/IP/DataProtocol.aspx。
最后,作为安全专家,我必须指出,这段代码需要经过严格测试。它面临高风险,因为要可靠地执行此操作,您不能在托管代码中执行它,而必须在C ++中执行(我想您可以使用VB6)。您应该考虑是否真的需要这样做,如果确实需要,请仔细设计并编写安全的代码。攻击者可以通过简单地在页面上包含链接来轻松控制传递给您的内容。例如,如果有一个简单的缓冲区溢出,那么没人最好不要这样做:<a href="custom:foooo{insert long string for buffer overflow here}"> Click me for free porn</a>
强烈建议使用VC8及其以上版本编译器中包含的strsafe和新的安全CRT方法。如果您不知道我在说什么,请参阅http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx。
以下是已注册的URI方案列表。每个方案都有一个称为RFC的文档定义它,几乎是一种标准。RFC告诉新应用程序(如浏览器、ftp客户端等)的开发人员需要支持什么。如果您需要一个新的基本协议,则可以使用未注册的协议。其它答案会告诉您如何操作。请记住,您可以利用现有协议进行许多操作,从而获得其现有的实现。
mqtt://
,但它并未在列表中注册。 - Juan Perez实际上你不必进行注册。我见过很多程序,例如emule,创建它们自己的协议指示器(我认为是这样称呼的)。之后,你只需在注册表中设置一些值来指定哪个程序处理该协议即可。我不确定是否有任何官方的协议指示器注册表。如果你希望让人们从浏览器中打开你的应用程序,那么自己创建一个协议指示器也并不难。