我见过:
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中,您需要创建他们称之为可插入协议处理程序的浏览器.
基本步骤如下:
实现IInternetProtocol接口.
实现IInternetProtocolRoot接口.
实现IClassFactory接口.
可选的.实现IInternetProtocolInfo接口.事务处理程序提供对HTTP协议的支持.
如果实现了IInternetProtocolInfo,请提供对PARSE_SECURITY_URL和PARSE_SECURITY_DOMAIN的支持,以便URL安全区域管理器可以正确处理安全性.编写协议处理程序的代码.
提供对BINDF_NO_UI和BINDF_SILENTOPERATION的支持.
在HKEY_CLASSES_ROOT\PROTOCOLS\Handler下的注册表中为协议处理程序添加一个子项.
在子项下创建字符串值CLSID,并将字符串设置为协议处理程序的CLSID.
有关Windows端的更多详细信息,请参阅MSDN上的关于异步可插入协议.Windows SDK中还有一个示例.
快速谷歌还在codeproject上展示了这篇文章:http://www.codeproject.com/KB/IP/DataProtocol.aspx.
最后,作为一个安全人员,我必须指出这个代码需要加强战斗力.这是一个很高的风险,因为要可靠地做到这一点,你不能在托管代码中做到这一点,并且必须用C++做(我想你可以使用VB6).您应该考虑是否真的需要这样做,如果您这样做,请仔细设计并安全地编码.攻击者可以通过简单地在页面上包含链接来轻松控制传递给您的内容.例如,如果你有一个简单的缓冲区溢出,那么没有人更好地这样做: Click me for free porn
强烈考虑使用VC8及以上编译器中包含的strsafe和新的安全CRT方法.如果您不知道我在说什么,请访问http://blogs.msdn.com/michael_howard/archive/2006/02/27/540123.aspx.
这是注册的URI方案的列表.每个人都有一个RFC - 一个定义它的文档,几乎是一个标准.RFC告诉开发人员他们需要支持的新应用程序(例如浏览器,ftp客户端等).如果您需要新的基本级协议,则可以使用未注册的协议.其他答案告诉你如何.请记住,您可以使用现有协议执行大量操作,从而获得现有的实现.