使用撇号

时间:2016-08-24 14:33:19

标签: c# .net mono

我希望这是一个简单的问题。这就是我正在做的事情:

Process process = new Process {
    StartInfo = {
        FileName = "C:\\David's Program\\program.exe",
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        UseShellExecute = false
    }
};
process.Start();

问题是FileName有撇号,导致:

Win32Exception: ApplicationName='C:\David's Program\program.exe'…

我已使用FileName C:\\Davids Program\\program.exe(无撇号)对此代码进行了测试,并且没有例外。此外,在使用带有撇号的UseShellExecute = true时设置FileName(而不是尝试重定向标准输出)也可以正常工作。

所以UseShellExecute = falseFileName中的撇号肯定是罪魁祸首。但是,对于我的生活,我无法弄清楚如何逃避它。我尝试\'\\'\\\'\\\\'都无济于事。

有什么想法吗?感谢。

编辑:我正在使用Mono 2.6(近似于.NET 2.6奇偶校验)环境。

编辑2 :产生相同异常的其他尝试:

  1. "\"C:\\David's Program\\program.exe\""
  2. @"C:\David's Program\program.exe"
  3. String.Format("C:\\David{0}s Program\\program.exe", (char)39)
  4. 我还在不同的位置测试了不同的.exes,并且在每个测试实例中,我重命名了包含目录以删除撇号,只是为了找到代码然后运行完美。

0 个答案:

没有答案