【问题标题】:Call to Process works fine with Debug, but it doesn't work in the installed applicationCall to Process 在 Debug 中运行良好,但在已安装的应用程序中不起作用
【发布时间】:2019-06-29 10:42:09
【问题描述】:

我正在开发一个 Windows 窗体程序,该程序通过 Process 类调用 ffmpeg 库。

当我在 Visual Studio 2013 中使用 Debug 运行它时它工作正常。但是当我安装程序并调用调用 ffmpeg Process 的操作时,它不起作用. cmd屏幕出现消失,没有任何反应。

我试图知道获取带有 ffmpeg 输出的日志文件会发生什么,以防 ffmpeg 库中出现问题。但是执行完后log是空的,说明ffmpeg命令还没有执行。

有人可以帮帮我吗?

代码是这样的:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c " + ffmpegPath + " " + commandArguments;
using (Process processTemp = new Process())
{
    processTemp.StartInfo = startInfo;
    processTemp.EnableRaisingEvents = true;
    processTemp.Start();
    processTemp.WaitForExit();
}

我正在调用cmd.exe(不是直接ffmpeg.exe),因为在参数中有时可能有一个管道(这就是命令以“/c”开头的原因)。

【问题讨论】:

标签: c# .net visual-studio winforms ffmpeg


【解决方案1】:

嗯,这不是文件/目录名称中的空格的路径问题吗?对于 ffmpegPath 或您的命令参数之一(如果是文件路径)。用 ' 包围所有文件路径,如下所示。

尝试用'包围任何文件路径

 startInfo.Arguments = "/c '" + ffmpegPath + "' " + commandArguments;

您也可以尝试将 /K 添加到 cmd 命令调用以停止,如果它在完成时关闭命令提示符。它可能会在关闭窗口之前告诉您错误,但如果它关闭得这么快,您将看不到它

祝你好运:) 保罗

【讨论】:

    【解决方案2】:

    您确定这不是尝试执行 cmd.exe 时的权限问题(例如,您需要管理员权限)

    尝试添加

    startInfo.Verb = "runas";
    

    保罗

    【讨论】:

    • 我不这么认为。我有一个带有 level="requireAdministrator" 的 app.manifest,无论如何我也尝试使用 startInfo.Verb = "runas" 来做它,但它还不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2020-03-05
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多