salut, p>
Windows fournit des descriptions d'extension de fichier tels que "Panneau de configuration" pour les fichiers .CPL et "Poweriso Fichier" pour les fichiers .daa. Y a-t-il quelque chose que je peux obtenir ces données dans .net? Je suis en utilisant c # mais peut lire toutes les autres langues .NET. Aussi y a également un moyen d'obtenir l'icône par défaut des extensions également? Toute aide serait appréciée. P>
Merci d'avance p>
5 Réponses :
Les extensions sont associées à la touche HKEY_CLASSES_ROOT. Vous devez donc ouvrir le registre et trouver la valeur qui vous intéresse. Vous devriez également pouvoir trouver l'icône par défaut là-bas. P>
ici exemple de projet (je n'ai pas essayé) . P>
Vous ne trouverez pas de telles jolies chaînes comme "élément du panneau de commande" là-bas
La chose à noter ici est que les associations d'extension varieront par machine.
Merci à tous. ShgetfileInfo semble un peu moins brut que la manipulation du registre. Aussi andrey est écrit que l'extension est ok comme des fichiers Poweriso, mais les fichiers .CPL sont simplement appelés Cplfiles au lieu d'éléments de contrôle des "éléments du panneau de commande", comme indiqué dans le panneau de configuration des programmes par défaut de Windows. Merci très utile, aussi pour quelqu'un d'autre qui a besoin de plus de référence dans le futur support.microsoft.com/kb/ 319350 montre comment utiliser ShgetfileInfo dans C # aussi.
Vous pouvez utiliser le (la plupart des constantes ne sont pas réellement utilisées dans ce code, mais je les mettais de toute façon au cas où vous souhaitez adapter le code à vos besoins spécifiques) p> p> shgetfileinfo code> API pour obtenir cette information. Voici une méthode d'emballage:
Comment est-ce meilleur ou différent de l'utilisation de la classe FileInfo en C #? (juste curieux)
@Tony Abrams, la classe FileInfo ne vous donne pas la description de type. Sinon, je pense que c'est surtout une enveloppe pour shfileinfo ...
à l'aide du système.Runtime.Interopservices; code> nécessaire
Permet de dire que votre extension est .xyz pour afficher le texte le plus adapté aux utilisateurs comme "élément du panneau de commande", vous devez faire deux choses: p>
Vous pouvez rechercher dans le registre comme celui-ci:
HKEY_CLASSES_ROOT code>. Par exemple, la valeur par défaut de hkey_classes_root \ .txt code> est txtfile code>. Li>
- Ensuite, recherchez la valeur par défaut du résultat précédent: Par exemple, la valeur par défaut de
hkey_classes_root \ txtfile code> est document texte code>. li>.
ul> Après deux recherches, la réponse est Texte du texte fort>. p> Vous pouvez tester toute autre extension par regedit p>. p>. Visitez ce lien: http://www.codeproject.com/ Kb / cs / getfileetypeandicon.aspx? Afficheur = imprimé p>
Il s'agit de la mise en œuvre de ces deux recherches: p> xxx pré> p>
Pour utiliser shgetfileinfo code> le fichier doit exister sur le disque. Si vous n'avez que le nom em> du fichier, ou même simplement l'extension, vous devrez obtenir les informations directement à partir du registre: public static string GetFileTypeDisplayName(string extension) =>
Registry.ClassesRoot.OpenSubKey(extension)?.GetValue(null) is string keyName ?
Registry.ClassesRoot.OpenSubKey(keyName)?.GetValue(null) as string :
null;
Très similaire à Stackoverflow.com/Questions/1910097/Content-Type-By -extensio n
@David Stratton, ce n'est pas la même question. La question que vous mentionnez consiste à obtenir le type de contenu (type MIME). Celui-ci consiste à obtenir la description du type de fichier.
Dupliqué possible de Get Type de fichier dans .NET