カスタム プロトコル ハンドラ (mailto など) を登録しようとすると、URL スキーム文字列の長さに関して、Windows 8 にいくつかの制限があるように見えることがわかりました。
公式の標準では、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
この制限に関する公式情報は見つかりませんでした。
私の場合、ここで何が間違っているのか、それが本当にシステムの制限なのか、誰か説明してもらえますか?