Иногда желательно, чтобы ваше приложение открыло приложение по умолчанию для файла. Например, чтобы открыть файл PDF, который вы можете использовать:
System.Diagnostics.Process.Start("Filename.pdf");
 
Чтобы открыть изображение, вы просто используете тот же код с другим именем файла:
System.Diagnostics.Process.Start("Filename.gif");
 
Некоторые расширения (например,.gif) всегда имеют обработчик по умолчанию, даже при базовой установке Windows. Однако некоторые расширения (например,.pdf) часто не имеют приложения для их обработки.
В этих случаях было бы желательно определить, связано ли приложение с расширением файла, который вы хотите открыть, прежде чем сделать вызов Process.Start(имя_файла).
Мне интересно, как лучше всего реализовать что-то вроде этого:
static bool ApplicationAssociated(string extension)
{
    var extensionHasAssociatedApplication = false;
    var condition = // Determine if there is an application installed that is associated with the provided file extension.;
    if (condition)
    {
        extensionHasAssociatedApplication = true;
    }
    return extensionHasAssociatedApplication;
}