C#:Path.Combine没有提供完整路径

时间:2018-01-10 04:53:06

标签: c#

下面的代码没有提供完整的路径,可能是什么原因?

var X = Path.Combine( Environment.GetEnvironmentVariable("PROGRAMFILES(X86)"), "/ABC/XYZ.exe");

输出:/ABC/XYZ.exe

预期:C:/ Program Files(x86)/ABC/XYZ.exe

2 个答案:

答案 0 :(得分:6)

Path.Combine的第二个参数(“/ ABC/XYZ.exe”)以斜杠开头,它会让你回到根目录。删除这个前导斜杠,你应该得到你想要的输出。

Path.Combine(Environment.GetEnvironmentVariable("PROGRAMFILES(X86)"), "ABC/XYZ.exe")

来自the documentation

  

如果path2不包含根(例如,如果path2不以分隔符或驱动器规范开头),则结果是两个路径的串联,以及插入的分隔符。如果path2包含root,则返回path2。

答案 1 :(得分:4)

请改用以下代码:

var programFilesPath = System.Environment.GetFolderPath(
    System.Environment.SpecialFolder.ProgramFiles);
var X = Path.Combine( programFilesPath, "ABC/XYZ.exe" );

注意我删除了前导'/'字符。当它存在时,Path.Combine将使用第二个路径而不是组合,因为它将它作为root。 System.Environment.SpecialFolder.ProgramFiles始终引用程序文件的ProgramFiles (x86)版本。

相关问题