System.Diagnostic.Process-command非英语操作系统中的调用问题

时间:2012-12-02 14:28:39

标签: system.diagnostics

我有实现,我使用System.Diagnostic.Process通过命令提示符运行* .EXE。  这在英语操作系统中运行得非常好。但是,为了支持多语言 - 我已将OS显示语言更改为法语。当我运行相同的代码时,它什么都不做。但是没有错误/异常。但是,非英语不做任何事情(命令似乎没有被执行)。

以下是我使用的示例代码,

Process pdfProcess = new Process();
StreamWriter writer;
StreamReader reader;

ProcessStartInfo info = new ProcessStartInfo("cmd");

info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.WorkingDirectory = exePath; //Path where Invoke exe located
pdfProcess.StartInfo = info;
pdfProcess.Start();

writer = pdfProcess.StandardInput;
reader = pdfProcess.StandardOutput;
writer.AutoFlush = true;
writer.WriteLine(command);

writer.Close();
string ret = reader.ReadToEnd();

问题是文件名。在非英语语言中,特殊字符被添加到文件名中,而上述代码未执行该文件名。例如:

  

command = MyEXE.exe“C:\Sintítulo_Bloc de notas.txt”

如果你看到上面(西班牙语),“í”文字就会导致问题。如果我删除它们,它们会被执行。

任何人都有解决方法如何解决它?

0 个答案:

没有答案