查找在Windows上打开特定文件类型的默认应用程序

我正在使用C#开发一个面向.NET Framework 2.0的应用程序,我需要能够找到用于打开特定文件类型的默认应用程序。


我知道,例如,如果您只想使用该应用程序打开文件,您可以使用以下内容:


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

在默认浏览器中打开HTML文档,或


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

在默认文本编辑器中打开文本文件。


但是,我希望能够在默认文本编辑器中打开不一定具有.txt扩展名的文件(例如),因此我需要能够找到打开的默认应用程序。 txt文件,这将允许我直接调用它。


我猜测有一些Win32 API,我需要P / Invoke才能做到这一点,但是对谷歌和MSDN的快速浏览并没有发现任何有趣的东西; 我确实找到了大量完全不相关的页面,但没有像我在寻找的那样。


呼啦一阵风
浏览 610回答 3
3回答

慕盖茨4494581

您可以在注册表部分中HKEY_CLASSES_ROOT查看扩展和操作详细信息。有关此文档的文档位于MSDN上。或者,您可以使用IQueryAssociations接口。

繁星点点滴滴

您只需查询注册表即可。首先获取HKEY_CLASSES_ROOT \ .ext下的Default条目那会给你一个类名。例如.txt的默认值为txtfile然后打开HKEY_CLASSES_ROOT \ txtfile \ Shell \ Open \ Command这将为您提供使用的默认命令。
打开App,查看更多内容
随时随地看视频慕课网APP