【问题标题】:How can i delete a directory in localappdata in the current user如何删除当前用户的 localappdata 中的目录
【发布时间】:2021-09-29 19:17:48
【问题描述】:
System.IO.DirectoryInfo di = new DirectoryInfo(@"C:\Users\%userprofile%\AppData\Local\MyFolder");

foreach (FileInfo file in di.GetFiles())
{
    file.Delete(); 
}
foreach (DirectoryInfo dir in di.GetDirectories())
{
    dir.Delete(true); 
}

我正在使用此代码删除当前使用的用户中 %localappdata% 中的目录。但它说该文件夹不存在。我不知道怎么写路径。

谢谢

【问题讨论】:

  • 我尝试使用“Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)”作为用户建议的另一个帖子,但我在一个名为“Andrew”的用户中是我的次要用户,但该代码的输出返回我的主要用户。
  • User "Andrew 正在运行代码,但输出是我的主要用户,名为 "Its Me",我不知道为什么会这样:我想在另一台计算机或 VM 上尝试/跨度>
  • 我的操作系统是 Windows 11 内部版本,也许这就是问题所在?我们将看到,因为我在 Windows 7 虚拟机上安装了编译器。
  • 通过任务管理器“Andrew”正在运行所有进程,我的主要用户甚至不在列表中。我认为这是 Windows 11 内部错误。
  • 这应该是 Windows 11 版本的问题,因为在 Windows 7 中它可以正常工作。

标签: c# .net


【解决方案1】:

您可以使用以下代码:

string path;
path = @"%LOCALAPPDATA%";
path = Environment.ExpandEnvironmentVariables(path);

您可以参考以下链接了解更多详情: https://docs.microsoft.com/en-us/dotnet/api/system.environment.expandenvironmentvariables?view=net-5.0

【讨论】:

    【解决方案2】:

    问题在于:"C:\Users\%userprofile%\AppData\Local\MyFolder" 扩展为 "C:\Users\C:\Users\username\AppData\Local\MyFolder"

    你应该做"%userprofile%\AppData\Local\MyFolder"

    这就是断点和检查错误消息等基本调试技能可以为您省去很多麻烦的地方。毫无疑问,调试器会告诉你它说哪个目录不存在。

    即使只是将您的预期路径复制粘贴到资源管理器中也会发现问题。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 2012-09-03
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 2013-07-31
      相关资源
      最近更新 更多