【问题标题】:Run an application via shortcut using Process.Start()使用 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 文件和快捷方式。

标签: c# shortcut


【解决方案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 。这让我浪费了一个小时的工作……希望能救别人。

    【讨论】:

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

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

    我想运行“Translator.exe”程序。

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

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2017-06-09
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多