Difference between revisions of "Protocol Handler"

From MgmtWiki
Jump to: navigation, search
(Existing Providers)
Line 27: Line 27:
|"magnet" || || ||
|"magnet" || || ||
|"mailto" || || || It would be easy to start an email by clicking on this, but it is not done.
|"mailto" || || || It would be easy to start creation of an email by clicking on this, but it is not done.
|"mms" || || ||
|"mms" || || ||

Latest revision as of 10:46, 26 November 2021

Full Title

Protocol Handlers are models that can be added to a user's computer to extend the range of protocols that can be handled by that computer.


The scope of this wiki is focused on Protocol Handlers that process Identifiers and Authentication, but might involve payment procols as well.

Existing Providers

The list of whitelisted schemes is defined by the WHATWG specification:


These are the providers registered as of 201x

name Location Cat Recent News
bitcoin" Whitelisting bitcoin: URI handler in navigator.registerProtocolHandler()
"mailto" It would be easy to start creation of an email by clicking on this, but it is not done.
  • 2020-05-08 Daniel B @ MSFT asked to add did because it was a W3C specification, but that spec is still not final on 2021-11-21.
  • 2020-06-04 LGTM 1, 2 and 3 to add did to list
  • fredric wang email 2020-08-03 did was added, but was not actually in the WHATWG spec on 2021-11-11


These solutions are directed primarily to Smartphones, although uses on desktop computers are also considered. Originally all protocol handlers were written in native code for the operating system and installed by the user.


Was a topic in BlinkOn 15 2021-11-17 now on YouTube

The following are features of enterprise installation as so would be a challenge to provide for other implementations, like for federations.



The following adapts their example:

First, you need a ProgID in HKLM\SOFTWARE\Classes that dictates how to handle any input given to it (yours may already exist):

    MyApp.ProtocolHandler //this is the ProgID, subkeys are its properties
       (Default) = My Protocol //name of any type passed to this
          (Default) = %ProgramFiles%\MyApp\MyApp.exe, 0 //for example
                (Default) = %ProgramFiles%\MyApp\MyApp.exe %1 //for example

Then fill the registry with DefaultProgram info inside a Capabilities key:

             myprotocol = MyApp.ProtocolHandler //Associated with your ProgID

Finally, register your application's capabilities with DefaultPrograms:

        MyApplication = HKLM\SOFTWARE\MyApp\Capabilities

Now all "myprotocol:" links should trigger %ProgramFiles%\MyApp\MyApp.exe %1.