Q:

How does Windows Explorer give its file types?

Like how .dll files are listed as "Application extension", .txt files as "Text Document", and so on.
I've been trying to replicate this functionality recently for one of my own projects, and the only idea I've been able to come up with is a dictionary that maps an extension to a "description", so to speak, that I have written myself. However, this method isn't easily extendable, so is there a better way?
Example of current method
        Dictionary<string, string> file_type_dict = new Dictionary<string, string>
        {
            {".txt", "Text Document"},
            {".exe", "Application"},
            {".py", "Python File"},
            {".jpg", "Image File"},
            {".png", "Image File"},
            {".dll", "Application Extension"},
            {".js", "Javascript File"},
            {".mp3", "Music File"},
            {".mp4", "Video File"},
            {".wmv", "Video File"},
            {".ini", "Configuration File"},
            {".sys", "System File"},
            {".log", "Log File"},
            {".rar", "RAR Archive"},
            {".zip", "Compressed folder"},
            {".bmp", "Image File"},
        };

A:

use shell API SHGetFileInfo  to get information on a extension including icon, description http://msdn.microsoft.com/en-us/library/windows/desktop/bb762179(v=vs.85).aspx 

