我尝试访问AppData
文件夹以根据需要创建/删除目录,但使用Path.Combine
只会产生所需路径的一半。这就是我所拥有的:
string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"\Microsoft\Windows\Start Menu\SkillControl\");
测试字符串代替Directory.CreateDirectory
,这是下一行(工作时)。以下是调试这些行的结果:
sPath: "C:\\Users\\[user]\\AppData\\Roaming"
test: "\\Microsoft\\Windows\\Start Menu\\SkillControl\\"
我期待"测试"导致完整的路径:
C:\\Users\\[User]\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\SkillControl\\
但它似乎忽略了组合功能。任何人都可以找出原因吗?
要在澄清之前澄清,sPath
只是我确认Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
是否正在拉出正确位置的一种方式,我在做的时候会得到相同的结果
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
@"Microsoft\Windows\Start Menu\SkillControl\"));
答案 0 :(得分:7)
你的第二条路径是绝对路径 - 它以反斜杠开头。该方法的行为是as documented:
如果path2包含绝对路径,则此方法返回path2。
只需删除前导反斜杠就可以了。
string sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string test = Path.Combine(sPath, @"Microsoft\Windows\Start Menu\SkillControl\");