当尝试注册自定义协议处理程序(如mailto等)时,我发现Windows 8上似乎存在一些与URL方案字符串长度有关的限制。
official standard表示URL方案必须如下所示:
scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
但在Windows 8上,我发现以下情况如下:
不工作:
a.a.a.a.a.a.a.a.a.a.a.a.a (25 chars, 13 letters)
aaaaaaaaaaaaaa (14 chars, 14 letters)
aaaaaaaaaaaaa (13 chars, 13 letters)
WORKING:
a.a.a.a.a.a.a.a.a.a.a.a (23 chars, 12 letters)
aaaaaa.aaaaaa (13 chars, 12 letters)
aaaaaaaaaaaa (12 chars, 12 letters)
我的假设经过一番尝试后,URL方案长度不得超过12个字符(不包括点数)(我没有尝试“+”和“ - ”)。
我正在注册URL方案,如this answer中所述 (因为我希望我的应用程序在Windows 8现代用户界面中列出“打开方式”对话框)。
即。像这样(缩短):
HKEY_CURRENT_USER\Software\Classes\myapp.ProtocolHandler
(Default) = "urlscheme"
Shell\Open\command
(Default) = C:\path\to\my\app.exe %1
HKCU\SOFTWARE\mypublisher\myapp\Capabilities\URLAssociations
urlscheme = myapp.ProtocolHandler
HKCU\SOFTWARE\RegisteredApplications
mypublisher_myapp = Software\mypublisher\myapp\Capabilities
我找不到有关此限制的任何官方信息。
在我的情况下,有人可以解释我的错误,或者这是否是系统的限制?