Запуск приложения через ярлык с помощью Process.Start C#

Есть ли способ запустить приложение через ярлык из приложения С#?

Я пытаюсь запустить .lnk из своего приложения С#. Ярлык содержит значительное количество аргументов, которые я бы предпочел, чтобы приложение не запоминало.

Попытка запустить ярлык через Process.Start вызывает исключение.

Спасибо

РЕДАКТИРОВАТЬ:

Исключением является «Win32Exception»: «Указанный исполняемый файл не является допустимым приложением Win32».

Вот (сокращенный) код:

ProcessStartInfo info = new ProcessStartInfo ( "example.lnk" );
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardOutput = true;
info.RedirectStandardInput = true;
Process whatever = Process.Start( info );

person user664939    schedule 26.05.2011    source источник
comment
Ярлык требует аргументов или это цель ярлыка, который требует аргументов?   -  person Jodrell    schedule 26.05.2011
comment
@Jodrell обновлен запрошенной информацией. Цель ярлыка требует аргументов.   -  person user664939    schedule 26.05.2011
comment
Убедитесь, что ярлык действительно работает — он может быть сломан.   -  person Igby Largeman    schedule 26.05.2011
comment
@Charles ярлык работает. Он указывает на bat-файл — я могу запустить bat-файл и ярлык с помощью «укажи и щелкни».   -  person user664939    schedule 26.05.2011


Ответы (4)


Не могли бы вы опубликовать код. Что-то вроде этого должно работать:

Process proc = new Process();
proc.StartInfo.FileName = @"c:\myShortcut.lnk";
proc.Start();
person keyboardP    schedule 26.05.2011

Настройка UseShellExecute = false была проблемой. Как только я удалил это, он перестал падать.

person user664939    schedule 26.05.2011
comment
Сейчас это еще более важно, потому что ядро ​​.NET изменило значение этого свойства по умолчанию на false. Я столкнулся с этим, когда вообще не устанавливал это свойство. - person Cdaragorn; 10.09.2019

Если вы используете UseShellExecute = false и пытаетесь запустить пакетный файл, обязательно добавьте .bat в конец имени файла. Вам не нужен .bat, если UseShellExecute = true. Это заставило меня потратить час работы впустую... в надежде спасти кого-то еще.

person HippyPotamus    schedule 20.06.2017
comment
Добро пожаловать в StackOverflow и спасибо за помощь. Пройдя тур, вы получите свой первый значок. Повеселись. - person Yunnosch; 20.06.2017
comment
Я не понимаю. Почему бы вам оставить расширение файла? - person Rufus L; 11.01.2019

если ваш файл EXE или другой тип файла, такой как «.exe», «.mkv» или «.pdf», и вы хотите запустить его с ярлыком, ваш код должен нравиться этому.

я хочу запустить программу "Translator.exe".

Process.Start(@"C:\Users\alireza\Desktop\Translator.exe.lnk");
person Alireza    schedule 29.04.2014