使用Process.Start C#通过快捷方式运行应用程序

时间:2011-05-26 16:22:19

标签: c# shortcut

有没有办法通过C#应用程序的快捷方式运行应用程序?

我试图从我的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 );

5 个答案:

答案 0 :(得分:16)

你能发布一些代码吗?这样的事情应该有效:

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

答案 1 :(得分:5)

设置UseShellExecute = false是个问题。一旦我删除它,它就会停止崩溃。

答案 2 :(得分:0)

如果您的文件是EXE或其他文件类型,如" .exe"或" .mkv"或" .pdf"并且您希望使用快捷方式链接运行您的代码必须这样。

我想运行" Translator.exe"程序。

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

答案 3 :(得分:0)

如果您正在使用UseShellExecute = false并尝试启动批处理文件,请确保将.bat添加到文件名的末尾。如果UseShellExecute = true,则不需要.bat。这让我浪费了一个小时的工作......希望能拯救别人。

答案 4 :(得分:-1)

我今天花了数小时试图找出答案,很幸运在另一个网站上找到了答案,所以请确保对我的答案投赞成票,如果这对您有帮助。我会很感激的!

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

最终模块