Запустите приложение через ярлык, используя Process.Start C # - PullRequest
10 голосов
/ 26 мая 2011

Есть ли способ запустить приложение с помощью ярлыка из приложения C #?

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

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

Спасибо

EDIT:

Исключением является "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 );

Ответы [ 5 ]

16 голосов
/ 26 мая 2011

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

Process proc = new Process();
proc.StartInfo.FileName = @"c:\myShortcut.lnk";
proc.Start();
5 голосов
/ 26 мая 2011

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

0 голосов
/ 11 января 2019

Я потратил часы, пытаясь выяснить это сегодня, и, к счастью, нашел ответ на другом веб-сайте, поэтому, пожалуйста, обязательно проголосуйте за мой ответ, если это поможет вам.Буду признателен за это!

Imports System

Module Module1

Sub Main()

    RunCMDCom("start", "%userprofile%\desktop\AnyShortCut.lnk", False)

End Sub


Public Sub RunCMDCom(command As String, arguments As String, permanent As Boolean)
    Dim p As Process = New Process()
    Dim pi As ProcessStartInfo = New ProcessStartInfo()
    pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + arguments
    pi.FileName = "cmd.exe"
    p.StartInfo = pi
    p.Start()
End Sub

Конечный модуль

0 голосов
/ 20 июня 2017

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

0 голосов
/ 29 апреля 2014

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

Я хочу запустить программу «Translator.exe».

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