我有一个实现,我使用 .exe 通过命令提示符运行 *.EXE System.Diagnostic.Process
。这在英文操作系统中运行良好。但是,为了支持多语言 - 我已将操作系统显示语言更改为法语。当我运行相同的代码时,它什么也不做。但是没有错误/异常。但是,非英语没有做任何事情(命令似乎没有被执行)。
下面是我使用的示例代码,
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:\Sin título_ Bloc de notas.txt"
如果您在上面看到(西班牙语),“í”文本会导致问题。如果我删除它,它们的命令就会被执行。
任何人都有解决方案如何解决它?