You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Path.Combine未正确拼接AppData路径问题排查

问题原因与解决方法

嘿,这个问题我之前也踩过坑!问题的核心在于你传给Path.Combine的第二个参数开头的那个反斜杠(\)。

为什么会这样?

Path.Combine的规则是:如果传入的某个路径片段是以绝对路径标识开头(比如以\或/开头,或者包含盘符的完整绝对路径),它会直接忽略掉前面所有已经拼接好的路径,只保留这个绝对片段作为最终结果。你这里的@"\Microsoft\..."就是一个绝对路径片段,所以Path.Combine直接丢弃了AppData\Roaming的路径,只返回了后面的部分。

修正后的代码

只需要去掉第二个参数开头的反斜杠就可以了:

string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"Microsoft\Windows\Start Menu\SkillControl\");

或者更推荐的写法——把路径拆成多个参数传给Path.Combine,让它自动处理路径分隔符,这样更不容易出错:

string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, "Microsoft", "Windows", "Start Menu", "SkillControl");

(注:如果最后需要末尾的反斜杠,其实大部分文件系统操作(比如创建目录)都不需要它,Directory.CreateDirectory会自动处理;如果一定要加,可以在结果后拼接Path.DirectorySeparatorChar)

内容的提问来源于stack exchange,提问作者Ben R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:09:21