A common control for associating extensions is well overdue

Date:September 14, 2011 / year-entry #220
Tags:code
Orig Link:https://blogs.msdn.microsoft.com/oldnewthing/20110914-00/?p=9653
Comments:    23
Summary:Mark complained that a common control for associating extensions is well overdue. This is a recurring theme I see in the comments: People complaining that Windows lacks some critical feature that it in fact already has. (In the case, Windows had the feature for over two years at the time the question was asked. Maybe...

Mark complained that a common control for associating extensions is well overdue.

This is a recurring theme I see in the comments: People complaining that Windows lacks some critical feature that it in fact already has. (In the case, Windows had the feature for over two years at the time the question was asked. Maybe the SDK needs a ribbon? j/k)

Windows Vista added the Default Programs UI as a control panel program, and it also has a programmable interface. You can use IApplication­Association­Registration to query and set default associations, and you can use IApplication­Association­Registration­UI to invoke the control panel itself on a set of associations associated with your program.


Comments (23)
  1. AC says:

    I don't see why one would want to embed that control in an application. Most ordinary users don't ever touch these settings from the control panel, let alone in a dedicated app.

    That being said, I smiled at the ribbon joke. :)

  2. Adam Rosenfield says:

    Maybe Mark is still on XP and expects all new feature development to be backported to old OS versions?

  3. Michael Hoskins says:

    Disclaimer: I have only passing knowledge of how file associations are stored in the registry, so I may be incorrect on all assumptions here.

    Hi Raymond, I know this isn't your department, but…the interface for changing program defaults falls pretty far short of (I'd guess) almost any user expectation. I'm not asking for technical support, or help with my problem; I'm mostly parroting the feedback I left in Microsoft documentation.

    I have 187 programs listed in my Add/Remove Programs window. I understand that many of these won't have file extensions associated with them, but the Default Programs window lists exactly 15 applications, only 5 of which are aftermarket software (not included in Windows 7).

    Now, I know that many of the programs I have installed have associated file extensions. Most of the Adobe suite of software, including Reader, Microsoft Visual Studio 2008, and Microsoft Office (only Outlook shows up) are a few of the programs I'd expect to see here.

    Also, for many of the file types I actually want to dissociate with certain programs (.mp4 for Windows Media Player, for example), the checkboxes are disabled, so I can't actually change what I want anyway.

    [How is Windows supposed to know that Reader can open PDF files unless it somewhere declares "I can open PDF files"? Or are you saying that the control panel should just list every program on your machine as potentially capable of opening any file? -Raymond]
  4. ipoverscsi says:

    For those that are command-line oriented, there is a command line program called 'assoc' that allows you to display or set file associations.  It's available under Windows XP, but I haven't checked to see if it was available under earlier versions of Windows.

  5. John says:

    I think Mark may have been looking for a dialog like the Open File or Print dialogs so that you can ask the user whether they want to associate your app with the 3 or 4 filetypes it supports.  Not an unreasonable request, IMO

    Unless I'm missing something fundamental, the Default Programs UI only works for programs that have registered themselves with it, and the Set Associations applet doesn't allow you to add or remove file types, only change what programs an existing file type belongs to.  

    We're getting closer to what's really needed but we're not quite there yet.

  6. factor says:

    Re: Raymond's response to Michael's comment-

    Applications can already declare which file types they support, via Registered Applications (msdn.microsoft.com/…/cc144154(v=vs.85).aspx ) but I assume that's what Raymond was hinting at.

    Anyway, the user experience for changing file type associations is indeed dismal, and that annoyance fueled me to write the aptly titled Default Programs Editor (defaultprogramseditor.com ) which provides point and click access to many of the Windows file association internals including resetting Default Program associations and configuring context menus/ShellExec defaults. It's not 100% flawless but I declare it a step forward in the battle of ease of use vs complex configuration.

  7. Joshua says:

    This often comes up when it is desired to associate some program with some file extension it doesn't normally open because in some bizarro-world that is an appropriate program to open that file.

    One particular example (wildly random) is to use SQL 2000's query analyzer to open .php files rather than notepad to avoid notepad's bug where it will convert UTF-8 without BOM to UTF-8 with BOM. SQL 2000's query analyzer interprets UTF-8 (with or without BOM) as Windows-1252, nicely sidestepping the bug with the only downside being you cannot edit the UTF-8 strings. The actual format of .php is *BCS without BOM.

  8. fooey says:

    "This is a recurring theme I see in the comments: People complaining that Windows lacks some critical feature that it in fact already has."

    Welcome to the old new thing.

  9. Random832 says:

    "Or are you saying that the control panel should just list every program on your machine as potentially capable of opening any file?" Well, the old file types window had a browse button.

    Really, "Open With" is a much better replacement for it than Default Programs will ever be. What can't do is set the name/icon/other actions of a file type, but those are "power user" features anyway, and they'll just use regedit. The only place where it'll really be missed is the lack of an icon picker GUI.

  10. xpclient says:

    Bringing back the advanced file type association functionality is well overdue. Users need to be able to manually define a new file extension, define and edit custom secondary actions, show extensions only for specific file types, or customize the file icon and associated MIME type.

  11. Raymond and Michael, I believe you're talking about two different things. My impression is that Michael is talking about the "Set Default Programs" section of the "Default Programs" control panel, while Raymond is talking about the "Set Associations" section. It looks like Michael is going to the "Set Associations" section, looking at the PDF extension and seeing that he can associate it with three different programs. He then expects those three different programs to show up in the "Set Default Programs" section of the control panel.

    Forgive me if I misunderstood all that. ;-)

  12. xpclient says:

    People are also complaining that Windows lacks some critical feature because it has been removed and dumbed down for grandmas. Why use are the editions of Windows for? Just put the dumbed down GUI in Starter and Home editions and put back the advanced file association functionality in Professional, Enterprise/Ultimate editions. Alas, all feedback falls on deaf ears post XP.

  13. Phil W says:

    Not to mention that Windows Installer has an Extensions table that lets you do it at install time.

  14. John says:

    [I'm confused. When you double-click a PDF file, it opens in three programs?

    Or maybe one program is default, but when you right click the file, you have the option for the other two?

  15. RichardDeeming says:

    I agree with xpclient: removing the advanced file type association dialog was a terrible idea. OK, it would have overwhelmed most home users, and the new UI is much better for their needs, but for advanced users, surely it was better that hacking the registry?

  16. Michael Hoskins says:

    Hmm, it seems Tom Winter has figured out the problem (though I was looking directly at the registry to determine the file associations; thanks, Tom :). I also was completely ignoring the meaning of the actual phrase "default program," though honestly not sure why.

    I suppose call it a case of temporary stupidity, but I apologize for the misunderstanding.

  17. Michael Hoskins says:

    "are you saying that the control panel should just list every program on your machine as potentially capable of opening any file?"

    Did you really get that from what I described, or is that snark? No, that is not what I'm saying.

    If I double-click a .pdf currently, that file is opened by what I assume to be the "default" handler for that file extension. On my PC, it appears to open with Acrobat Pro, Reader, and Illustrator, which leads me to believe Explorer seems to understand this perfectly well.

    Perhaps I'm misunderstanding the meaning of "default program."

    [I'm confused. When you double-click a PDF file, it opens in three programs? Or is "Acrobat Pro, Reader, and Illustrator" the name of a single program? The issue is how you change the default program. The current design lets you choose only from programs that declared that they know how to open PDF files. Because we've found that if you let people pick *anything*, then people will often screw up their systems by associating, say, PDF files with Paint. Not because they really wanted to do it, but because they weren't sure what they were doing. -Raymond]
  18. Gechurch says:

    Nice job on the app factor – that one's going on my USB stick I carry with me everywhere. Being able to change program associations from a GUI is one of the few things I missed from Windows XP.

    @xpclient & Richard – I don't agree this is something that should be left out of the home editions and put in the higher end ones. Home users should be able to change file associations too (or, possibly more likely, the computer technicians who have to fix home computers should be able to make file assocation changes on machines running Windows Home). The placement for this in XP was good – it was there and easy to access for the more techy people that knew about it and what it did, but it was far enough out of the way that grandpa Joe would never find it.

  19. mvadu says:

    I may be out of topic, starting with Windows 7, if you use standard File open dialog, and limit the file the extensions, shell/explorer associates your program with that extension. So shell will provide "Recent Files" list, your program will appear in "Open With" list etc.  However your program won't appear in default actions. TO get their you need to register actions and supported file types.

  20. Stefan says:

    It may exists, but it is still difficult to use and doesn't offer many options. Not something that pleases power users.

    It doesn't help that many applications register file extensions without asking, and windows is fine with that.

  21. 640k says:

    Regedit *IS* the advanced file type association dialog. :)

  22. Bjartr says:

    I don't understand, what are people trying to do that the 'Open with…' dialog doesn't do?

  23. Stefan Kanthak says:

    @Richard Deeming:

    the advanced file type association dialog of Windows NT5.x is/was HORRIBLE and a mess!

    It missed to show and separate the association of .ext with ProgID and then ProgID with verbs and command lines, and lacked the ability to create ProgIDs completely.

    Changes made while .ext happens to be associated with ProgID are done in the registry key/entries of ProgID, thus destroying these settings, typically entered into the registry during installation of the application that owns ProgID.

Comments are closed.


*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index