【问题标题】:Why can't I set %USERPROFILE% for downloads in my C# project?为什么我不能在我的 C# 项目中为下载设置 %USERPROFILE%?
【发布时间】:2018-04-01 11:13:20
【问题描述】:

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

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

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

【问题讨论】:

  • 程序员必须自己做,使用 Environment.GetFolderPath()。

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


【解决方案1】:

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

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

using system;

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我用:

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

      【讨论】:

        猜你喜欢
        • 2013-09-24
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 2018-12-07
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多