C# 在路径中合并%USERPROFILE%

C# 在路径中合并%USERPROFILE%,c#,path,temp,C#,Path,Temp,我需要帮助将当前记录的%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(t

我需要帮助将当前记录的%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

这个怎么样:

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");
    }
}
这个怎么样:

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");
    }
}

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

String appData = 
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
如果要存储数据或执行某些操作,请使用该文件夹,而不是“代码本地设置”文件夹


(正如我的评论所说,本地设置文件夹是受保护的,这样您就无法打开它)

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

String appData = 
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
如果要存储数据或执行某些操作,请使用该文件夹,而不是“代码本地设置”文件夹


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

只想添加这一点,而
Environment.SpecialFolder.UserProfile
是对您的特定问题的一个很好的回答,还有另一个选项适用于所有环境变量,不仅仅是那些具有
SpecialFolder
accessor:


它将使用一个字符串,如您的
@“%USERPROFILE%\Local Settings\TEST”
,并返回一个新字符串,其中所有%%environment变量都已展开。

只想添加一个字符串,而
environment.SpecialFolder.USERPROFILE
是您特定问题的一个很好的答案,还有另一个选项适用于所有环境变量,而不仅仅是那些具有
SpecialFolder
accessor:


它将使用一个字符串,如
@“%USERPROFILE%\Local Settings\TEST”
,并返回一个新字符串,其中所有%%environment变量都已展开。

最好的方法是使用environment.expandenvironment变量

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);
        }
    }

最好的方法是使用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);
        }
    }

感谢您的帮助,我收到了:“system.environment.specialfolder不包含“userprofile”的定义”为什么?您收到了错误(在您对Raj Rao的评论中),因为您被拒绝访问“Local Settings”文件夹。。。它是受保护的。@user2681588
UserProfile
成员似乎已添加到.NET 4中的
环境.SpecialFolder
枚举中。感谢您的帮助,我得到了:“system.Environment.SpecialFolder不包含“UserProfile”的定义”为什么?您收到了错误(在您对Raj Rao的评论中)因为您被拒绝访问“本地设置”文件夹。。。它是受保护的。@user2681588
UserProfile
成员似乎已添加到.NET 4中的
环境中。SpecialFolder
枚举。这在其他服务器上如何工作?而不是(@“%USERPROFILE%\Local Settings\n我需要它来访问另一台计算机以获取信息。这在另一台服务器上如何工作?而不是(@“%USERPROFILE%\Local Settings\n我需要它来访问另一台计算机以获取信息。