我正在使用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接口。
HKEY_CLASSES_ROOT