我希望这是一个简单的问题。这就是我正在做的事情:
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 = false
和FileName
中的撇号肯定是罪魁祸首。但是,对于我的生活,我无法弄清楚如何逃避它。我尝试\'
,\\'
,\\\'
和\\\\'
都无济于事。
有什么想法吗?感谢。
编辑:我正在使用Mono 2.6(近似于.NET 2.6奇偶校验)环境。
编辑2 :产生相同异常的其他尝试:
"\"C:\\David's Program\\program.exe\""
@"C:\David's Program\program.exe"
String.Format("C:\\David{0}s Program\\program.exe", (char)39)
我还在不同的位置测试了不同的.exes,并且在每个测试实例中,我重命名了包含目录以删除撇号,只是为了找到代码然后运行完美。