在尝试注册自定义协议处理程序(如 mailto 等)时,我发现在 Windows 8 上似乎存在一些关于 URL 方案字符串长度的限制。
官方标准规定 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)
在职的:
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 方案 (因为我希望我的应用程序列在 Windows 8 现代 UI“打开方式”对话框中)。
即这样的东西(缩短):
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
我找不到有关此限制的任何官方信息。
谁能解释一下我的情况有什么问题,或者这真的是系统的限制吗?