拒绝访问该路径

时间:2011-06-07 16:14:11

标签: c# wpf

对于我的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);

3 个答案:

答案 0 :(得分:8)

在Vista +中,您不应该写入正在执行的进程的安装文件夹或父文件夹。相反,您应该考虑写入User的AppData文件夹中的子目录,因为这更合适,并且不会导致权限问题。

您可以通过Environment.GetFolderPathEnvironment.SpecialFolder.ApplicationData)获取相应的文件夹。

答案 1 :(得分:2)

我也有问题,因此我在这篇文章上遇到了磕磕绊绊。我在复制/删除之前和之后添加了以下代码行。

删除

File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);

复制

File.Copy(file, dest, true);
File.SetAttributes(dest, FileAttributes.Normal);

答案 2 :(得分:1)

或者您可以使用Path.GetTempPath()获取临时目录的路径并在其中创建临时数据。

使用Temp的好处是,如果您忘记/无法清理它,当驱动器空间很慢时,系统可以帮助您清理它。