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

Why can't I set %USERPROFILE% for downloads in my C# project?

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

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

更奇怪的是,使用 (@"%USERPROFILE%\Downloads\"); 会将下载的文件放入名为 %USERPROFILE% 的文件夹中与程序文件夹相同的文件夹中。我以前在批处理脚本中使用过 %USERPROFILE% 没有问题,它是 C# 中的不同通配符吗?我在这里错过了什么?

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

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

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

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

using system;

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

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

显然这更像是一个 Whosebug(编程)问题

我使用:

String DownloadPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\Downloads";