using Microsoft.Win32; using System.IO; /// <summary> /// Récupère le type MIME d'un fichier /// </summary> /// <param name="szFileName">Nom du fichier dont on veut le type MIME</param> /// <param name="forceDatabase">true pour rechercher /// dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type (MIME -> extension), /// false pour rechercher /// dans HKEY_CLASSES_ROOT (extension -> MIME)</param> /// <returns>le type MIME ou null</returns> public static string GetMIMEType(string szFileName,bool forceDatabase) { //type MIME renvoyé string ret = null; //extension du fichier avec "." string szExt = Path.GetExtension(szFileName); //valeur d'une valeur d'une clé de registre object val = null; //si on veut lire dans HKEY_CLASSES_ROOT directement if (!forceDatabase) { //on essaie d'ouvrir la clé RegistryKey extKey = Registry.ClassesRoot.OpenSubKey(szExt); if (extKey != null) { //il peut y avoir une valeur "Content Type" contenant le type MIME mais ce n'est pas obligatoire val = extKey.GetValue("Content Type"); extKey.Close(); } } //si on a déjà trouvé un type MIME et que l'on ne force pas la recherche dans HKEY_CLASSES_ROOT\MIME\DataBase\Content Type if (!forceDatabase && val != null) return val.ToString(); else { //ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type RegistryKey contentTypeKey = Registry.ClassesRoot.OpenSubKey(@"MIME\Database\Content Type"); //parcourt toutes les sous clés (types MIME connus) foreach (string subkey in contentTypeKey.GetSubKeyNames()) { //ouvre HKEY_CLASSES_ROOT\MIME\DataBase\Content Type\<type MIME> RegistryKey contentTypeSubKey = contentTypeKey.OpenSubKey(subkey); //récupère l'extension associée object ext = contentTypeSubKey.GetValue("Extension"); //si ca correspond on a trouvé if (ext != null && ext.ToString() == szExt) { ret = subkey; break; } contentTypeSubKey.Close(); } contentTypeKey.Close(); } return ret; }
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.