Windows 如何创建自己的URL协议?(例如,so://……)
我看到:Windows 如何创建自己的URL协议?(例如,so://……),windows,protocols,protocol-handler,Windows,Protocols,Protocol Handler,我看到: http://www... ftp://blah.blah... file://blah.blah... unreal://blah.blah... mailto://blah.blah... 您看到的http等的第一部分叫什么 我可以自己注册吗?你真的不需要这样做。我见过很多程序,比如emule,创建了自己的协议规范(我认为这就是所谓的)。之后,您基本上只需在注册表中设置一些值,以确定哪个程序处理该协议。我不确定是否有协议说明符的官方注册。如果你想让人们从浏览器中打开你的应用程序
http://www...
ftp://blah.blah...
file://blah.blah...
unreal://blah.blah...
mailto://blah.blah...
http
等的第一部分叫什么
我可以自己注册吗?你真的不需要这样做。我见过很多程序,比如emule,创建了自己的协议规范(我认为这就是所谓的)。之后,您基本上只需在注册表中设置一些值,以确定哪个程序处理该协议。我不确定是否有协议说明符的官方注册。如果你想让人们从浏览器中打开你的应用程序,没有什么可以阻止你为自己的应用程序创建自己的协议说明符。它被称为协议。唯一阻止您制定自己协议的是您必须:
第一部分称为协议,是的,您可以注册自己的协议。在Windows上(我假设您是在使用C标签的情况下这样做的-对不起,Mono fans),它已经完成了。带有
HTTP://
,FTP://
等的部分被调用
您可以通过注册表注册自己的帐户
HKEY_CLASSES_ROOT/
your-protocol-name/
(Default) "URL:your-protocol-name Protocol"
URL Protocol ""
shell/
open/
command/
(Default) PathToExecutable
资料来源:,
这是一份已注册用户的列表。每一个都有一个RFC——一个定义它的文档,这几乎是一个标准。RFC告诉新应用程序(如浏览器、ftp客户端等)的开发人员他们需要支持什么。如果您需要新的基本级别协议,可以使用未注册的协议。其他答案告诉你怎么做。请记住,您可以使用现有协议做很多事情,从而获得它们的现有实现。这对于每个浏览器都是不同的,在IE和windows中,您需要创建一个他们称之为可插入协议处理程序的程序 基本步骤如下:
强烈考虑使用StruScript和VC8和以上编译器中包含的新的安全CRT方法。看看你是否不知道我在说什么。
对于大多数Microsoft产品(Internet Explorer、Office、“打开文件”对话框等),当打开带有适当前缀的URI时,可以运行该对话框。这是更常见的一部分-如何实现您自己的协议对于Mozilla,解释是Java-。打开记事本并将下面的代码粘贴到其中。将“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\""
尽管有关于如何使协议在Windows中工作的技术细节,但这是最重要的答案。你不应该创建一个新的URI方案,除非它注册到IETF,或者使用一个实验性的名称空间(比如X前缀),那么非Windows操作系统呢?“非Windows操作系统呢?”它是特定于应用程序的。我认为它在Windows上也经常是特定于应用程序的(这不会让一切都神奇地工作)。注册表项告诉Windows将带有该协议的Uri传递给指定的应用程序,其他一切都应由应用程序自己处理。可插拔协议处理程序无疑是更好的选择。
(默认)
这里的意思是空字符串。不要把它当作字面意思。这只是吸引用户点击它的一个例子。请解释这一点:因为要做到这一点,你不能在托管代码中做到这一点,而必须在C++中做到这一点。这是从.NET 2运行时(注:这包括3和3.5)的时间帧。它在同一进程中不支持不同的CLR运行时,因此,如果我编写了1.0处理程序,而您编写了2.0处理程序,并且我们的两个产品都安装在客户的计算机上,那么我们将一起确保浏览器每次启动时都会崩溃。4.0运行时试图解决这个问题,但我记得还有一些边界情况需要关注。但要点是在本机进程中使用.Net对象作为插件是绝对避免的