58 votes

Recherche de l'application par défaut pour l'ouverture d'un type de fichier particulier sous Windows

Je suis du développement d'une application de ciblage .NET Framework 2.0 à l'aide de C# pour laquelle j'ai besoin d'être en mesure de trouver l'application par défaut qui est utilisée pour ouvrir un type de fichier particulier.

Je sais que, par exemple, si vous voulez juste pour ouvrir un fichier à l'aide de cette application vous pouvez utiliser quelque chose comme:

System.Diagnostics.Process.Start( "C:\...\...\myfile.html" );

pour ouvrir un document HTML dans le navigateur par défaut, ou

System.Diagnostics.Process.Start( "C:\...\...\myfile.txt" );

pour ouvrir un fichier texte dans l'éditeur de texte par défaut.

Cependant, ce que je veux être en mesure de faire est d'ouvrir des fichiers qui n'ont pas nécessairement un .txt extension (par exemple), dans l'éditeur de texte par défaut, donc j'ai besoin d'être en mesure de trouver l'application par défaut pour l'ouverture .txt des fichiers, qui va me permettre de l'appeler directement.

Je devine qu'il y a quelques Win32 API que je vais avoir besoin de P/Invoke pour ce faire, cependant, un rapide coup d'œil à la fois Google et MSDN ne pas révéler quoi que ce soit d'un grand intérêt; je n'ai trouver un très grand nombre de complètement hors de propos, pages, mais rien comme je suis à la recherche pour. Si quelqu'un sait quelle API/méthodes, je devrais être à l'aide, je serais très heureux de vous entendre.

Merci beaucoup!

18voto

curtisk Points 8623

Vous pouvez vérifier sous la section de registre HKEY_CLASSES_ROOT les détails de l'extension et de l'action. La documentation à ce sujet se trouve sur MSDN . Vous pouvez également utiliser l'interface IQueryAssociations .

8voto

Bart Read Points 827

Doh! Bien sûr.

 HKEY_CLASSES_ROOT\.txt
 

inclut une référence à

 HKEY_CLASSES_ROOT\txtfile
 

qui contient une sous-clé

 HKEY_CLASSES_ROOT\txtfile\shell\open\command
 

qui fait référence au Bloc-notes.

Trié, merci beaucoup!

Bart

5voto

xsl Points 7362

Voici un article de blog avec à propos de ce sujet. Les exemples de code sont en VB.net, mais il devrait être facile de les porter en C #.

3voto

Tom Points 1477

Vous pouvez simplement interroger le registre. Commencez par récupérer l'entrée par défaut sous HKEY_CLASSES_ROOT \ .ext

Cela vous donnera le nom de la classe. Par exemple, txtfile est associé à .txt

Ensuite ouvrez HKEY_CLASSES_ROOT \ txtfile \ Shell \ Open \ Command

Cela vous donnera la commande par défaut utilisée.

0voto

Ken Points 1693

Pouvez-vous utiliser le registre?

HKEY_CLASSES_ROOT.txt \ ShellNew

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X