我见过:
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 方案
您可以通过注册表注册自己的。
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
打开记事本并将下面的代码粘贴到其中。将“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 上的 About Asynchronous Pluggable Protocols 。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 客户端等)的开发人员他们需要支持什么。如果您需要一个新的基础级协议,您可以使用未注册的协议。其他答案告诉你如何。请记住,您可以使用现有协议做很多事情,从而获得它们现有的实现。
它被称为协议。唯一阻止您制定自己的协议的是您必须:
Windows 使#1 变得非常简单,在许多情况下,这就是您真正需要的。即:
第一部分称为协议,是的,您可以注册自己的协议。在 Windows 上(我假设你正在这样做,因为 C# 标签 - 对不起 Mono 粉丝),它是通过注册表完成的。
您实际上不必进行任何注册。我见过很多程序,比如 emule,创建了自己的协议规范(我认为它就是这样称呼的)。在那之后,您基本上只需要在注册表中设置一些值,以了解哪些程序处理该协议。我不确定是否有任何官方的协议说明符注册表。如果您希望人们从他们的浏览器中打开您的应用程序,那么没有什么可以阻止您为自己的应用程序创建自己的协议说明符。