无法从C#作为新进程运行Graphviz

本文关键字:进程 运行 Graphviz 新进程 | 更新日期: 2023-09-27 18:09:22

我在GraphViz的bin文件夹中创建了一个.dot文件。

如果我从命令行执行:dot -Tpng -o graph.png -graph.dot它创建了一个png图像,但如果我在C#中运行它,则不会创建png文件。该程序以管理员身份运行。(下面的检查代码(

using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = @"C:'Program Files (x86)'Graphviz2.38'bin'dot.exe";
    dot.StartInfo.Arguments = "-Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}

无法从C#作为新进程运行Graphviz

从cmd运行,将/C添加到参数的开头

using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = "cmd.exe";
    dot.StartInfo.Arguments = "/C dot -Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}

您没有设置工作目录,所以文件可能是生成的,但位于windows32或类似的默认位置。

尝试以下

using (var dot = new Process())
{
    dot.StartInfo.Verb = "runas"; // Run process as admin.
    dot.StartInfo.FileName = @"C:'Program Files (x86)'Graphviz2.38'bin'dot.exe";
    dot.StartInfo.WorkingDirectory = @"C:'ProgramData"; # or some other location you can write to
    dot.StartInfo.Arguments = "-Tpng -o graph.png -graph.dot";
    dot.Start();
    dot.WaitForExit();
}