下面的代码没有提供完整的路径,可能是什么原因?
var X = Path.Combine( Environment.GetEnvironmentVariable("PROGRAMFILES(X86)"), "/ABC/XYZ.exe");
输出:/ABC/XYZ.exe
预期:C:/ Program Files(x86)/ABC/XYZ.exe
答案 0 :(得分:6)
Path.Combine
的第二个参数(“/ ABC/XYZ.exe”)以斜杠开头,它会让你回到根目录。删除这个前导斜杠,你应该得到你想要的输出。
Path.Combine(Environment.GetEnvironmentVariable("PROGRAMFILES(X86)"), "ABC/XYZ.exe")
如果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)
版本。