5

How do I run a custom command for tel: links in Windows 10?

I'm trying to open phone numbers formatted as links with dialer.exe. I was able to do this successfully with callto: links by adding the path for dialer.exe to HKCU\SOFTWARE\Classes\callto\shell\open\command (details here).

However, this didn't work for tel: links. This post suggested that tel: links need to be configured in HKCR\tel\shell\open\command instead, but that didn't work, either.

Trying to configure tel: links via Windows Settings or the Control Panel only gives me the options to open them in Chrome, Skype for Business, or "Look for an App in the Store". In the Control Panel, I tried in Set Associations and Set Default Programs. In the Settings app, I tried "Choose default apps by protocol".

This post suggests that I need to delete the Tel key under HKLM\SOFTWARE\Clients\StartMenuInternet\Google Chrome\Capabilities\URLAssociations\, but it appears that only removed Chrome from the list of suggested apps that appears when I try to open a tel: link.

This post said I should clear HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\tel\ProgId, but that just brings up the window to choose between Skype and a Windows Store app again.

  • This edit works fine here, running Windows 10. voip - How to associate a softphone with a phone url - Server Fault. Can you export the HKCR\tel registry key and post here. – w32sh Aug 25 '16 at 16:59
  • If I change the default value of HKCR\tel\shell\open\command to anything else, and then click on a tel link, the system changes it back to "C:\Program Files (x86)\Microsoft Office\Root\Office16\Lync.exe" "%1". So maybe I need to uninstall Skype for Business. – browly Aug 25 '16 at 20:00
  • You can try per-user override, here: HKCU\Software\Classes\tel – w32sh Aug 25 '16 at 20:06
  • To avoid that Microsoft unified communications clients such as Lync will become the default application for tel: or other protocols, see the registry update in this Microsoft article for setting DisabledProtocolHandlerRegistrations. – harrymc Aug 27 '16 at 14:32
5
+50

You can save this (you should change dialer %1 to your own command line):

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Classes\callto]
@="URL:callto"
"URL Protocol"=""

[HKEY_CURRENT_USER\SOFTWARE\Classes\tel]
@="URL:tel"
"URL Protocol"=""

[HKEY_CURRENT_USER\SOFTWARE\Classes\dialer.callto]

[HKEY_CURRENT_USER\SOFTWARE\Classes\dialer.callto\Shell]

[HKEY_CURRENT_USER\SOFTWARE\Classes\dialer.callto\Shell\Open]

[HKEY_CURRENT_USER\SOFTWARE\Classes\dialer.callto\Shell\Open\Command]
@="dialer %1"

[HKEY_CURRENT_USER\SOFTWARE\Dialer]

[HKEY_CURRENT_USER\SOFTWARE\Dialer\Capabilities]
"ApplicationDescription"="Dialer"
"ApplicationName"="Dialer"

[HKEY_CURRENT_USER\SOFTWARE\Dialer\Capabilities\URLAssociations]
"callto"="dialer.callto"
"tel"="dialer.callto"

[HKEY_CURRENT_USER\SOFTWARE\RegisteredApplications]
"Dialer"="Software\\Dialer\\Capabilities"

as .reg file and import it in the registry. That should add dialer in the list of programs you can choice for callto: and tel: protocols.

  • It worked! One last step to add: it seems you have to reboot before dialer will show up in the list of programs to choose from. I tried harrymc's solution first, and that may have helped keep Lync from interfering; I'm not sure. – browly Aug 30 '16 at 21:10
  • I have found other tutorials using DefaultIcon key. It didn't seem to do anything though and instead the name and icon was taken from the executable. Any ideas how to set app name and icon? – Qwerty Jan 12 '17 at 16:08
  • If you are asking for a way to overwrite the seemingly default behaviour of taking App name from the DefaultIcon listed program, the only way I know (and suspect the only way period) would be to alter the Program's Icon with Resource Editor tools like angusj.com/resourcehacker . Just changing the app name should be simple - Rename the executable and alter the contents of HKEY_CLASSES_ROOT\<protocol name>\DefaultIcon to match. – user66001 May 3 '17 at 16:49
  • Hi how do I use this reg file what do I need to change "dialer %" to exactly? Would that be the path of the executable file in the dialer directory? Does anything else need changing in the code above before importing it into the registry? – Scott Jul 20 '17 at 13:44
  • I'd just like to open phone numbers with my horizon softphone... – Scott Jul 20 '17 at 13:58
2

This Microsoft article may answer the problem :
Lync 2013, Lync 2010, or Office Communicator 2007 R2 becomes the default application for protocols after user signs in.

Summary

When you sign in to Microsoft Lync 2013, Microsoft Lync 2010, or Microsoft Office Communicator 2007 R2, registry settings for the following protocols are overwritten:

  • TEL
  • CALLTO
  • SIP
  • SIPS
  • IM
  • CONF

When this occurs, the application that you signed in to becomes the default application that supports these protocols.

Workaround

  1. Open Registry Editor. To do this, follow these steps:

    • In Windows 8.0 or Windows 8.1, press the Windows Function key to open the Start screen. If you are running Windows 7, click Start.
    • Search for regedit.exe by using the Windows Search feature.
    • Right-click regedit.exe, and then click Run as administrator.
  2. If you have installed Lync 2010 or Office Communicator 2007 R2, locate and then right-click the following registry subkey: HKEY_CURRENT_USER\Software\Microsoft\Communicator
    If you have installed Lync 2013, locate and then right-click the following registry subkey: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Lync

  3. Point to New, and then click DWORD (32-bit) Value.

  4. Type DisabledProtocolHandlerRegistrations as the name of the new registry entry, and then press Enter.

  5. Input the correct information about the third-party application that you want in the registry. For example, to change the default application that supports SIP from Office Communicator 2007 R2 to a third-party application that you want, follow these steps:

    • Locate and then click the following registry subkey:
      HKEY_CURRENT_USER\Software\Classes\sip\shell\open\command
    • Double-click the default registry entry. Then, change the value to reflect the application that you want to use instead of the Microsoft UC clients.
      Note: The default value in the registry entry points to the Microsoft UC client.
    • Prevent Microsoft UC client information from being rewritten to the registry setting that you changed in step B. To do this, add one of the following values to the DisabledProtocolHandlerRegistrations registry entry:

      TEL: 0x0001
      CALLTO: 0x0002
      SIP: 0x0004
      SIPS: 0x0008
      IM: 0x0010
      CONF: 0x0020
      

Notes

  • You can sum the values in the list if you want to prevent a Microsoft UC client from being the default application for multiple protocols. For example, to prevent the Microsoft UC client from being the default application for SIP, enter 0x0004. To prevent the Microsoft UC client from being the default application for CALLTO, enter 0x0002. To prevent the Microsoft UC client from being the default application for both SIP and CALLTO, enter 0x0006. To prevent the Microsoft UC client from being the default application for all the protocols, enter 3f.
  • The values in the DisabledProtocolHandlerRegistrations registry entry will be unavailable if you change them when you sign in to the Microsoft UC client.
  • I tried this, and now HKCR\tel\shell\open\command and HKCU\Software\Classes\sip\shell\open\command' don't change back to Lync when I click a tel:` link, but it still opens Lync (Skype) instead of the program I specified. – browly Aug 30 '16 at 20:53
  • You should delete DisabledProtocolHandlerRegistrations, then see if the fix from the answer you accepted still continues to work. – harrymc Aug 31 '16 at 6:52
  • Good idea. I deleted DisabledProtocolHandlerRegistrations; then I launched Skype for Business and didn't steal the protocol association back, so it appears that PetSerAl's answer is sufficient without DisabledProtocolHandlerRegistrations turned on. – browly Aug 31 '16 at 15:59
  • Thanks. It might be that this is done by another application. If the protocol steal happens again, please leave me a note here. – harrymc Aug 31 '16 at 17:06
0

The easiest way is to open registry - HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\Google Chrome\Capabilities\URLAssociations, then find tel and change the meaning from ChromeHTML to the name of your program, and it WORKS!! When you click on types "tel:xxx-xx-xx" in Chrome, instead of Chrome, there is name of your program!!

  • How is this better than accepted answer? – Toto Feb 1 '18 at 8:34
  • Because when you change HKCU\Software\Classes\tel - it doesn't change program and actually it does nothing, try to do it first before asking question! – Munn Feb 4 '18 at 12:15

Not the answer you're looking for? Browse other questions tagged or ask your own question.