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

Posted

技术标签:

【中文标题】使用 Process.Start() 通过快捷方式运行应用程序【英文标题】:Run an application via shortcut using Process.Start() 【发布时间】:2011-09-02 18:21:35 【问题描述】:

有没有办法通过 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 );

【问题讨论】:

快捷方式需要参数还是需要参数的快捷方式的目标? @Jodrell 更新了请求的信息。快捷方式的目标需要参数。 确保快捷方式确实有效 - 它可能会损坏。 @Charles 快捷方式确实有效。它指向一个 bat 文件 - 我可以通过点击运行 bat 文件和快捷方式。 【参考方案1】:

你能发布一些代码吗?这样的事情应该可以工作:

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

【讨论】:

【参考方案2】:

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

【讨论】:

这一点现在更加重要,因为 .NET Core 已将此属性的默认值更改为 false。当我根本没有设置此属性时,我遇到了这个问题。【参考方案3】:

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

【讨论】:

欢迎来到 *** 并感谢您的帮助。参加tour 将获得您的第一个徽章。玩得开心。 我不明白。为什么要去掉文件扩展名?【参考方案4】:

如果您的文件是 EXE 或其他文件类型,如“.exe”或“.mkv”或“.pdf”,并且您希望使用快捷链接运行它,您的代码必须像这样。 我想运行“Translator.exe”程序。

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

【讨论】:

以上是关于使用 Process.Start() 通过快捷方式运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

C#,Process.Start() 传递多参数问题。

我必须处理 Process.Start(url) 吗?

Process.Start() 啥都不做

无法通过进程启动启动 exe

安装程序在使用 Process.Start() 启动时失败,但在双击时工作

Process.Start - 将 html 代码作为参数传递给 exe