【问题标题】:Process.Start() fails to open the exeProcess.Start() 无法打开 exe
【发布时间】:2012-08-06 22:54:30
【问题描述】:

我正在尝试从 C# 代码启动应用程序。下面是代码..但是exe给出错误“应用程序遇到问题需要关闭。不便之处敬请见谅”。

我将命令值传递为

command = "\"C:\\Program Files\\Nimbuzz\\Nimbuzz.exe\"";

代码:

private int ExecuteSystemCommand(string command)
{
   procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
   procStartInfo.RedirectStandardOutput = true;
   procStartInfo.UseShellExecute = false;
   procStartInfo.CreateNoWindow = false;
   proc = new System.Diagnostics.Process();
   proc.StartInfo = procStartInfo;
   proc.Start();

   return proc.Id;
}

但是从桌面快捷方式打开时,exe可以正常打开。我不知道怎么了。请提出建议。

【问题讨论】:

  • 您是否尝试将command 传递给构造函数而不是cmd /c
  • 为什么需要cmd.exe间接调用exe而不是直接启动exe?
  • 程序因各种原因崩溃,这肯定与您的 C# 代码无关。通过从快捷方式执行它的方式执行它,最大限度地减少遇到问题的可能性。不要重定向输出并设置 ProcessStartInfo.WorkingDirectory 属性。如果没有帮助,请联系程序所有者寻求支持。
  • 下注 WorkingDirectory!
  • @AlvinWong:你的想法成功了..谢谢..

标签: c# .net


【解决方案1】:

您必须指定要执行的 EXE。

Process.Start("cmd.exe", ...)

这些文章似乎回答了这个问题:

【讨论】:

    【解决方案2】:

    我刚刚发现,我需要先设置工作目录,然后再调用 Process.Start()

    Directory.SetCurrentDirectory("C:\\Program Files\\Nimbuzz\\");
    

    【讨论】:

    • 设置目录后我遇到了同样的问题。你明白为什么有些进程需要设置当前目录吗?
    • 有一个更好的方法是使用Process.Start()重载并设置ProcessStartInfo.WorkingDirectory。通过调用SetCurrentDirectory(),您也可以更改正在运行的程序的当前目录(如果您执行一些 I/O 操作,例如使用相对路径打开文件,这可能会产生后果)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多