调用进程适用于调试,但在已安装的应用程序中不起作用



我正在开发一个Windows表单程序,该程序可以通过类Process调用ffmpeg库。

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

我试图知道获取带有 ffmpeg 输出的日志文件会发生什么,以防万一这是 ffmpeg 库中的问题。但是,执行后日志为空,这意味着 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 "开头的原因(。

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

尝试添加

startInfo.Verb = "runas";

保罗

嗯,

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

尝试用">

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

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

祝你好运:)保罗

最新更新