拒绝访问路径
本文关键字:路径 拒绝访问 | 更新日期: 2023-09-27 17:58:47
对于我的WPF应用程序,我必须创建带有图像文件的文件夹,例如:C:''Pearl''Src''TEMP。稍后,当不需要这些文件时,我会以编程方式删除文件夹。但我得到"访问路径"被拒绝"。我还尝试为创建的临时文件夹分配访问权限,但没有太大用处。
using System.IO;
var activeDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var dInfo = Directory.GetParent(Path.GetDirectoryName(activeDir);
var dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(@"ATSDEV'ABCD", FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity); // Set the new access settings.
var ImageDir = Path.Combine(dInfo.ToString(), "TEMP");
System.IO.Directory.CreateDirectory(ImageDir, dSecurity);
在Vista+中,您永远不应该写入执行进程的安装文件夹或父文件夹。相反,您应该考虑写入用户的AppData文件夹中的子目录,因为这样更合适,而且不会导致权限问题。
您可以通过Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).
我也遇到了这个问题,所以我在这篇文章中跌跌撞撞。我在复制/删除之前和之后添加了以下代码行。
删除
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
复制
File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);
或者您可以使用Path.GetTempPath()
获取临时目录的路径并在其中创建临时数据。
使用Temp的好处是,如果您忘记/未能清理它,当驱动器空间很慢时,系统可以帮助您清理它。