-Edit- Я чувствую себя идиотом. У меня было ощущение, что ответ, подобный ниже, будет работать, но не видел никаких результатов в Google, подобных приведенным ниже ответам. Поэтому, когда я увидел этот сложный код, я подумал, что это должно быть так.
Я искал и нашел это Windows: список и запуск приложений, связанных с расширением, однако он не ответил на мой вопрос. С настройками ниже я придумал ниже. Однако он застревает в файлах изображений. Файлы Txt работают нормально
Я скоро обновлю этот код, чтобы учесть пути к приложениям с пробелами, но я не понимаю, почему файлы изображений не запускаются.
static void launchFile(string fn)
{
//majority was taken from
///info/266878/windows-list-and-launch-applications-associated-with-an-extension
const string extPathTemplate = @"HKEY_CLASSES_ROOT\{0}";
const string cmdPathTemplate = @"HKEY_CLASSES_ROOT\{0}\shell\open\command";
string ext = Path.GetExtension(fn);
var extPath = string.Format(extPathTemplate, ext);
var docName = Registry.GetValue(extPath, string.Empty, string.Empty) as string;
if (!string.IsNullOrEmpty(docName))
{
// 2. Find out which command is associated with our extension
var associatedCmdPath = string.Format(cmdPathTemplate, docName);
var associatedCmd = Registry.GetValue(associatedCmdPath, string.Empty, string.Empty) as string;
if (!string.IsNullOrEmpty(associatedCmd))
{
//Console.WriteLine("\"{0}\" command is associated with {1} extension", associatedCmd, ext);
var p = new Process();
p.StartInfo.FileName = associatedCmd.Split(' ')[0];
string s2 = associatedCmd.Substring(p.StartInfo.FileName.Length + 1);
s2 = s2.Replace("%1", string.Format("\"{0}\"", fn));
p.StartInfo.Arguments = s2;//string.Format("\"{0}\"", fn);
p.Start();
}
}
}