BUG: IE Can't Open Registered Helper App for URL with Spaces
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
Attempting to invoke a helper application via an HTML link or InternetExplorer address bar with a URL of the form"telnet://some%20URL%20encoded%20string" results in the following errormessage from Internet Explorer 4.0:
Internet Explorer cannot open the helper application for
"telnet://some url encoded string/".
The protocol specified in this address is not valid. Make sure the
address is correct, and try again.
URLs with embedded spaces, whether they have been URL encoded to %20 ornot, are automatically converted to a form that prevents Internet Explorer4.0 from correctly locating the registered helper application.
Change all "%20" encoded spaces to "%2520". This has the effect of double-encoding, which helps Internet Explorer handle the protocol correctly. For example, change
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
This bug is related to the documentation in the Internet Client SDK(InetSDK) under the following topic:
Internet Client SDK: Internet Tools & Technologies; Monikers, URLs, Security Zones, and Pluggable Protocols; Overview; Appendix B: Registering an Application to a URL Protocol
As an example, this section illustrates the technique of registering anapplication for a protocol. The documentation shows how to registerNotepad.exe as the handler for URLs of the form "note:c:\myfile.txt"
First of all, Notepad does not work correctly in this situation, as mightbe expected after reading this appendix in the InetSDK. When InternetExplorer 4.0 processes "note:c:\myfile.txt," it executes Notepad and passesthe entire URL to it. Because Notepad does not understand URLs such as"note:c:\myfile.txt," it does not open the c:\myfile.txt file as expected.
The "telnet:" protocol is an example of an application (TELNET) registeredin a similar manner by Internet Explorer 4.0 when it is installed. TELNETworks as expected because the registered shell command underHKEY_CLASSES_ROOT\telnet\shell\open\command points to a routine in Url.dllthat strips off the "telnet://" part and invokes Telnet.exe with the restof the URL.
Second, as this article describes, if a URL contains spaces when it isinvoked, "note:c:\program files\my file name with spaces.txt" for example,Internet Explorer fails to execute Notepad at all. An error message similarto the one listedunder the SYMPTOMS section earlier appears.
Because spaces are invalid characters in correct URLs, the proper form ofthe above example would be "note:c:\program%20files\my%20file%name."Unfortunately, this example does not work correctly either, as InternetExplorer pre- converts the %20's back to spaces before passing the stringon to the shell to execute.
For custom protocols such as "note:" that must support spaces in the URL,there are two alternatives. The first is to use the workaround described inRESOLUTION above. As a second possibility, the "Monikers, URLs, SecurityZones, and Pluggable Protocols" documentation in the InetSDK describes amore complete method for handling custom protocols. Following thedirections therein related to creating a "Pluggable Protocol Handler" wouldallow any application to correctly handle any URL form. Please refer tothis documentation for more information on pluggable protocols.
Outlook uses this method to register the "outlook:" protocol. Because ofthe bug mentioned in this article, URLs with spaces such as"outlook:\\public%20folders\all%20public%20folders" will fail as hyperlinkswithin Web pages while URLs without spaces such as "outlook:inbox" willsucceed.
Internet Client SDK: Internet Tools & Technologies; Monikers, URLs,Security Zones, and Pluggable Protocols; Overview; Appendix B: Registeringan Application to a URL Protocol
Article ID: 176347 - Last Review: 06/22/2014 18:36:00 - Revision: 3.0