The information about file extensions is stored the registry in HKEY_CLASSES_ROOTS. If the extension description exists, it will be under a sub-key of the same name. The “(Default)” value will contain the PROGID to lookup. When you look up the PROGID, in there – it will have the actual description.
If it does exist, like say “.zzz” – then Windows Explorer defaults to “ZZZ file” – so that’s what this method does too.
See the following C# code see this in action:
private string GetFileTypeDescription(string fileName) { if (string.IsNullOrEmpty(fileName)) throw new ArgumentException("Argument 'fileName' cannot be null or empty."); // Get the file extension in the form of ".doc" or ".xls" string extension = Path.GetExtension(fileName); // If there is no file extension, Windows Explorer just shows "File" if (string.IsNullOrEmpty(extension)) return "File"; // Get the upper case version, without the ".". So ".doc" turns into DOC. This is used for unknown file types. This is how // Windows Explorer shows unknown file types string extensionNoDot = extension.Substring(1, extension.Length - 1).ToUpper(); // Go look up the extension in HKEY_CLASSES_ROOT RegistryKey extensionKey = Registry.ClassesRoot.OpenSubKey(extension); // If this is null, the file extension isn't registered, so just return the extension in caps, without the . - and " file". So // somefile.pdb turns into "PDB file" if (extensionKey == null) return extensionNoDot + " file"; // The root/default value for a registry sub-key should have the ProgId of the application that is used to open the file - so // go try to get that value. string lookupProgId = extensionKey.GetValue("", string.Empty).ToString(); // If there is no default value, there is no application associated with the file extension. if (string.IsNullOrEmpty(extension)) return extensionNoDot + " file"; ; // Go lookup the progid RegistryKey progIdKey = Registry.ClassesRoot.OpenSubKey(lookupProgId); // If the progid wasn't found, then show the default value. if (string.IsNullOrEmpty(extension)) return extensionNoDot + " file"; ; // If we got here, the root/default value of the progid key should have the friendly name of the application, so return that. // But again, if there was an error or if it's empty, it defaults to the standard "EXT file" format. return progIdKey.GetValue("", extensionNoDot + " file").ToString(); }