¿Cómo se configura un OpenFileDialog para seleccionar carpetas?

En VS .NET, cuando selecciona una carpeta para un proyecto, se muestra un cuadro de diálogo que parece un OpenFileDialog o SaveFileDialog, pero está configurado para aceptar solo carpetas. Desde que vi esto, he querido saber cómo se hace. Conozco el FolderBrowserDialog, pero nunca me ha gustado ese diálogo. Comienza demasiado pequeño y no me permite aprovechar la posibilidad de escribir una ruta.

Ahora estoy casi seguro de que no hay una forma de hacerlo desde .NET, pero también tengo curiosidad por saber cómo hacerlo desde un código no administrado. A menos que se vuelva a implementar completamente el diálogo desde cero, ¿cómo se modifica el diálogo para que tenga este comportamiento?

También me gustaría reiterar que conozco el FolderBrowserDialog, pero a veces no me gusta usarlo, además de tener una curiosidad genuina sobre cómo configurar un diálogo de esta manera. Decirme que solo use el FolderBrowserDialog me ayuda a mantener una experiencia de interfaz de usuario coherente, pero no satisface mi curiosidad, por lo que no contará como una respuesta.

Tampoco es algo específico de Vista; He estado viendo este diálogo desde VS .NET 2003, por lo que es factible en Win2k y WinXP. Esto es menos una pregunta de "Quiero saber la forma correcta de hacer esto" y más de "Tengo curiosidad acerca de esto desde la primera vez que quise hacerlo en VS 2003". Entiendo que el diálogo de archivo de Vista tiene una opción para hacer esto, pero ha estado funcionando en XP, así que sé que lo hicieronalguna cosa para que funcione. Las respuestas específicas de Vista no son respuestas, porque Vista no existe en el contexto de la pregunta.

Actualización: acepto la respuesta de Scott Wisniewski porque viene con una muestra de trabajo, pero creo que Serge merece crédito por señalar la personalización del diálogo (que es ciertamente desagradable de .NET perohace trabajo) y Mark Ransom por descubrir que MS probablemente desplegó un diálogo personalizado para esta tarea.

Respuestas a la pregunta(17)

Su respuesta a la pregunta