Tuesday, May 3, 2011

How can I add a custom url handler on Windows. Like iTunes itms://

I would like telnet://blah to open putty and not the native windows telnet client.

I don't even know what this 'feature' is called under windows so I'm having no luck find any information about it.

Thanks in advance, Jan

From stackoverflow
  • See here for an example

  • To change the telnet: protocol handler (or any other existing handler) on XP (may work for Vista - I haven't looked), go to Control Panel > Folder Options > File Types (Tab). Scroll down (not much, it's near the top) to find (NONE) URL:Telnet Protocol, and hit the "Advanced" button. From here on in, it's just like changing a file type association. Note that the target application needs to support the passing of the supplied URL as a parameter.

    Unfortunately, the "New" button doesn't seem to allow the creation of new "URL" types, as it requires the entry of an extension. To create a new one, I've previously had to copy an existing entry from the registry (that is: find, export, edit in text editor, and re-import).

  • If it's simple, you can do it via the command line:

    ftype telnet # view current binding
    ftype telnet=\path\to\putty.exe %1
    

    Otherwise you'll need to use the registry as previously posted.

    Jan Bannister : Thanks for that Richard, ftype looks like just the thing. However, when I create a binding like: ftype ssh=c:\putty %1 When I try and run 'ssh:' I get 'Access Denied'...
    Goran Peroš : I found that in Vista I'm getting 'File not found' depending on user administrative rights and UAC turned on or off. http: and mailto: as protocols doesn't have this problem
  • It's a registry keys that provides the custom URI handlers.

    Here's an article on it on MSDN, to quote some of it:

    HKEY_CLASSES_ROOT
         alert
              (Default) = "URL:Alert Protocol"
              URL Protocol = ""
              DefaultIcon
                   (Default) = "alert.exe"
              shell
                   open
                        command
                             (Default) = "C:\Program Files\Alert\alert.exe" "%1"
    

    That would you allow to do

    alert:some message

    And your application would obviously receive the "some message" as its argument.

0 comments:

Post a Comment