使用 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() 通过快捷方式运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章