查找用于在Windows上打开特定文件类型的默认应用程序
时间:2020-03-06 15:01:37 来源:igfitidea点击:
我正在使用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来完成,但是快速浏览Google和MSDN并没有发现什么令人感兴趣的东西。我确实找到了大量完全不相关的页面,但没有找到我想要的东西。
解决方案
我们可以在注册表部分" HKEY_CLASSES_ROOT"下检查扩展名和操作详细信息。有关此文档,请参见MSDN。或者,我们可以使用IQueryAssociations接口。
这是有关此主题的博客文章。代码示例在VB.net中,但是将它们移植到C#应该很容易。
我们可以只查询注册表。首先在HKEY_CLASSES_ROOT \ .ext下获得默认条目
这将为我们提供类名。例如.txt的默认值为txtfile
然后打开HKEY_CLASSES_ROOT \ txtfile \ Shell \ Open \ Command
这将为我们提供使用的默认命令。
h!当然。
HKEY_CLASSES_ROOT\.txt
包括对
HKEY_CLASSES_ROOT\txtfile
其中包含一个子项
HKEY_CLASSES_ROOT\txtfile\shell\open\command
参考记事本。
排序,非常感谢!
巴特