为什么我不能在我的C#项目中为下载设置%USERPROFILE%?

时间:2018-04-01 11:13:21

标签: windows c# wildcard visual-studio-2017

我正在开发一个程序,用于从Internet检索用户的文件。当我设置下载路径时,要么没有任何反应,要么Visual Studio告诉我我的路径无法写入。以下是我尝试过的路径:

(@"%USERNAME%\Downloads\");
(@"%USERPROFILE%\Downloads\");
(@"C:\Users\%USERNAME%\Downloads\");
(@"C:\Users\%USERPROFILE%\Downloads\");

更奇怪的是,使用(@"%USERPROFILE%\Downloads\");将下载的文件放在与%USERPROFILE%文件夹中的程序文​​件夹相同的文件夹中。我之前在批处理脚本中使用%USERPROFILE%没有问题,它是否是C#中不同的通配符?我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

%Variablename%是批处理语法。在c#中,您必须手动解析环境变量。

请参阅https://msdn.microsoft.com/de-de/library/77zkk0b6(v=vs.110).aspx

答案 1 :(得分:1)

C#不会自动从字符串中扩展环境变量。这样做可能会对其他问题产生严重的安全隐患。

在尝试文件操作之前,您需要使用Environment.ExpandEnvironmentVariables方法,例如;

using system;

void Main()
{  
    String DownloadPath= @"%USERPROFILE%\Downloads\";

    String ExpandedDownloadPath = Environment.ExpandEnvironmentVariables(DownloadPath);
    Console.WriteLine("ExpandedPath: {0}", ExpandedDownloadPath);
}

显然,这更多是StackOverflow(编程)问题