带参数的c#进程不工作

本文关键字:工作 进程 参数 | 更新日期: 2023-09-27 18:08:37

ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = false;
psi.UseShellExecute = false;
psi.FileName = "convert.exe";
psi.WorkingDirectory = @"C:'Users'Der'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'";
psi.Arguments = " icone.gif -fuzz 10% -transparent white icone.ico";
Process.Start(psi);

如果我尝试运行这个没有发生,但如果去到那个路径并输入convert.exe icone.gif -fuzz10% -transparent10% white icone.ico它工作。我做错了什么?

带参数的c#进程不工作

我放弃了,做了一个bat文件,它工作了。

        var p = new System.Diagnostics.Process();
        p.StartInfo.FileName = @"C:'Users'LL'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'icone.bat";
        p.StartInfo.WorkingDirectory = @"C:'Users'LL'Downloads'Wunderground_API_Test'Wunderground_API_Test'Wunderground_API_Test'";
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = true;
        p.Start();
        p.WaitForExit();

这是因为c#将StartInfo参数作为Unicode传递,而您的程序"convert.exe"不处理Unicode参数的解释。当你通过批处理文件调用它时,它不会将参数作为Unicode传递。

下面的链接似乎解决了您的问题。附代码示例。

由Process.Start()启动的应用程序没有得到参数

所以,在我的机器上试用LINQPad,我认为这可能是对工作目录的误解。工作目录不是文件的位置,它是文件应该认为它正在运行的位置。尝试删除该行并在FileName中指定完整路径。