在我的应用程序中,每个用户都可以设置自己的保存路径来保存他的文件和设置 所以每次用户登录时我必须搜索包含用户名+“数据”的文件夹 例如,如果用户名是“Kim”,我需要找到KimData文件夹的路径 当我尝试获取C:\中的所有目录时出现UnauthorizedAcessException
有没有办法搜索该文件夹或只是在搜索时跳过未经授权的文件夹?
答案 0 :(得分:0)
UnauthorizedAccessExpection
表示调用者没有访问目录/文件所需的权限。由于您在本地进行,因此有多种选择。在您尝试将数据从VS复制到文件(Create, copy, delete)
等中的数据后,您可以尝试File.SetAttributes(yourfile, FileAttributes.Normal)
。
您也可以使用Environment.GetFolderPath。因此,这:
“获取由...标识的系统特殊文件夹的路径 指定的枚举,并使用指定的选项进行访问 特殊文件夹。“
另外,我猜你只是一次查看整个目录/文件夹/路径。解决方法是一次探测一个目录。 这是假设您要添加文件。找到目录后,您可以使用:
Directory.GetFiles(path)
.ToList()
.ForEach(s => files.Add(s));
Directory.GetDirectories(path)
.ToList()
.ForEach(s => AddFiles(s, files));
编辑:有关堆栈的一些有用的相关问题可能是:
答案 1 :(得分:0)
查看Ignore folders/files when Directory.GetFiles() is denied access,看看它是否对您有帮助。
但是,如果你试图寻找一个特定的文件夹 - 根据你的问题,用户可以放在任何地方 - 在整个目录树中我建议反对它,因为它可能会很慢。
我建议在某处保存路径,并在用户重新登录时从那里读取它。
如果它的桌面应用程序和每个用户使用自己的Windows帐户运行应用程序,更好的解决方案是始终将数据写入用户的ApplicationData文件夹,您可以使用 Environment.GetFolderPath(Environment.SpecialFolder)获取该文件夹.ApplicationData)即可。 正如名称所示,此文件夹的存在是为了保存用户登录到Windows的应用程序数据及其个人