As far as I know, everyone hates the "Browse for Folder" dialog:

browse for folder dialog

This dialog is always too small, rarely remembers locations well, and worst of all: forces you to navigate your entire computer using a tedious tree structure.

Now, to be fair, some of the problems are likely to do with how apps are invoking the control -- not setting a size or a default directory, etc. But the problem about the tedious tree control remains.

Is there any way to customize your Windows installation to use a different control? Preferably an app/installer that does it for you safely, but dropping in a compatible DLL or similar technique would be okay too.

Or are we stuck with this terrible control forever?

  • Most of the complaints you have are options controled by the software that uses it. You would have to replace the entire shell to change it.
    – Ramhound
    Jun 26, 2013 at 15:58
  • 1
    It is a poor excuse for a user interface. Jul 26, 2014 at 23:52
  • 2
    This terrible UX annoys me every single time.
    – Ryan
    Sep 27, 2017 at 14:05

1 Answer 1


short answer, yes you are stuck with it

long answer:

the function you are mentioning is the SHBrowseForFolder() function in Shell32.dll. This function is linked and executed from thousands of programs, so unless you are writing a specific program that you want a modified dialog for, what you desire will not be possible without modifying or replacing shell32.dll (which is for all intents and purposes, beyond the scope of this site).

here is the documentation for the function: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762115%28v=vs.85%29.aspx

if you simply want to change it within a program you are writing, search for the specifics of your langague/platform to find tutorials (they are copious).

  • 2
    Just wanted to ask, there's a version of the dialog that's marginally more usable since it at least allows you to copy/paste a path. Is that a custom dialog, or perhaps SHBrowseForFolder() itself with some params, or is there a separate function for it?
    – Karan
    Jun 28, 2013 at 3:49
  • @Karan, from what I'm seeing in the doc, if you set the functions lpbi input parameter to point to the address of a BROWSEINFO instance whose UFLAGS is set to 0x00000010, the edit box will appear. unfortunately, since its a parameter, only the developer has the choice to show it or not on an app-by-app basis. Jun 28, 2013 at 13:29
  • Thanks and yes, looks like the BIF_EDITBOX flag needs to be set. "only the developer has the choice to show it or not" - But of course. I wasn't implying that this was something the end user could hope to do with the binary.
    – Karan
    Jun 28, 2013 at 16:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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