Environment.SpecialFolder.ApplicationData返回错误的文件夹

Bas*_*imo 16 c# windows wpf

我有一个奇怪的问题:我的.NET 4.0 WPF应用程序正在将数据保存到ApplicationData文件夹.

 Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\myProgram\\";
Run Code Online (Sandbox Code Playgroud)

99.9%的案例工作得很好,但在某些计算机上它返回错误的文件夹 - 而不是返回用户文件夹,它返回另一个文件夹:

C:\Users\<user>\AppData\Roaming\myProgram\  --correct
C:\Users\s\AppData\Roaming\myProgram\       --wrong
Run Code Online (Sandbox Code Playgroud)

错误的文件夹没有写入/读取权限,因此我的程序不起作用.

程序似乎在不同的用户下运行,但如果我检查任务管理器,则用户是已记录的用户.

问题似乎发生在具有很少权限的域用户.

小智 11

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Run Code Online (Sandbox Code Playgroud)

你创建一个文本文件来写你想要的吗?

你还需要分配一个变量,例如:

String path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

if(File.Exists(path + "filetowrite.log"))
{
     ......................
}
Run Code Online (Sandbox Code Playgroud)

在检查文件之前,检查目录是否存在更加确定.问候我希望能帮助你.

  • 始终使用Path.Combine,从不使用"+",因为您不知道路径是否以backslah结尾(或者根本使用反斜杠). (7认同)