为什么我不能在我的 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";
我正在开发一个从 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";