Я хочу обратиться за помощью к открытию файла из приложения С# с соответствующим приложением. Я пробовал это:
ProcessStartInfo pi = new ProcessStartInfo(file);
pi.Arguments = Path.GetFileName(file);
pi.UseShellExecute = true;
pi.WorkingDirectory = Path.GetDirectoryName(file);
pi.FileName = file;
pi.Verb = "OPEN";
Process.Start(pi);
или это:
Process.Start(file);
где строка file
в обоих примерах представляет полный путь к файлу, пытающемуся открыть. Теперь все работает хорошо, кроме изображений (jpg) с помощью приложения ACDSee. Ассоциации Irfanview хорошо работают, документы MS Office тоже. После попытки открыть jpg-образ, связанный с acdsee, он просто запускает acdsee в области уведомлений и не открывает файл.
Я обнаружил, что в реестре CLASSES_ROOT для изображений *.jpg в качестве связанного приложения есть значение ACDSee.JPG, а под этим ключом находится shell- > Open → Команда путь:
"C:\Program Files\ACD Systems\ACDSee\ACDSee.exe" /dde
и я считаю, что эта странная /dde
причина, почему я не могу открыть файл. Я понял, что в том же ключе ключа shell- > Open имеется некоторая запись DDEExec
со значением [open("%1")]
Для просмотра Irfan или другого зарегистрированного приложения нет ddeexec, просто обычная команда, например
"C:\Program Files (x86)\IrfanView\i_view32.exe" "%1"
который можно запустить из командной строки после замены% 1 для имени файла , но я не смог запустить команду из записи acdsee в командной строке: (
Итак, мой вопрос: как настроить объект ProcessStartInfo
на , чтобы он выполнял все файлы, как это было бы в проводнике, двойным щелчком, стандартами и этим DDEExec
одни? Есть ли что-то другое, вроде DDEExec
, о котором я должен знать?
спасибо и извините за мой EN