【问题标题】:Combine %USERPROFILE% in path在路径中组合 %USERPROFILE%
【发布时间】:2013-11-18 17:04:47
【问题描述】:

我需要帮助将当前记录的 %USER% 添加到路径中,这是我目前的代码:

DirectoryInfo dir = new DirectoryInfo(@"%USERPROFILE%\Local Settings\TEST");
foreach (FileInfo files in dir.GetFiles())
{
     files.Delete();
}
foreach (DirectoryInfo dirs in dir.GetDirectories())
{
    dirs.Delete(true);
}

我怎样才能让他以当前用户的身份阅读 %USERPROFILE%? 我想要一个例子来解决问题,顺便说一句,我想用它来删除 C:\Document and settings\%USERPFORILE%\Local Settings\Temp

【问题讨论】:

    标签: c# path temp


    【解决方案1】:

    最好的方法是使用 Environment.ExpandEnvironmentVariables

    void Main() {
            string path = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\Local Settings\TEST");
    
            DirectoryInfo dir = new DirectoryInfo(path);
            foreach (FileInfo files in dir.GetFiles())
            {
                files.Delete();
            }
            foreach (DirectoryInfo dirs in dir.GetDirectories())
            {
                dirs.Delete(true);
            }
        }
    

    https://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx

    【讨论】:

    • 这对于不同的服务器如何工作?而不是 (@"%USERPROFILE%\Local Settings\ 我需要它来访问另一台机器以获取信息。
    【解决方案2】:

    只是想补充一点,虽然Environment.SpecialFolder.UserProfile 是您特定问题的一个很好的答案,但还有另一个适用于所有环境变量的选项,而不仅仅是那些具有SpecialFolder 访问器的选项:Environment.ExpandEnvironmentVariables

    它将接受一个字符串,例如您的@"%USERPROFILE%\Local Settings\TEST",并返回一个扩展了所有 %% 环境变量的新字符串。

    【讨论】:

      【解决方案3】:

      我认为这是你真正想要的:

      String appData = 
          Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
      

      如果您想存储数据或做某事,请使用它而不是 Code Local Setting 文件夹。

      (正如我的评论所说,本地设置文件夹受到保护,因此您将无法打开它)

      【讨论】:

        【解决方案4】:

        这个怎么样:

        void Main()
        {
            string userProfile = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
            string subFolder = @"Local Settings\TEST";
            string path = Path.Combine(userProfile, subFolder);
        
            DirectoryInfo di = new DirectoryInfo(path);
            if (di.Exists)
            {
                Console.WriteLine("Deleting " + di);
                di.Delete(true);//recursive
            }
            else
            {
                Console.WriteLine("Directory " + di + " was not found");
            }
        }
        

        【讨论】:

        • 感谢您的帮助,我得到:“system.environment.specialfolder 不包含 'userprofile' 的定义”为什么会这样?
        • 您收到错误消息(根据您对 Raj Rao 的评论),因为您被拒绝访问“本地设置”文件夹...它受到保护。
        • @user2681588 UserProfile 成员似乎已添加到 .NET 4 中的 Environment.SpecialFolder 枚举中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-10
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        • 2017-04-27
        相关资源
        最近更新 更多