【发布时间】:2012-10-09 10:58:40
【问题描述】:
考虑这个简单的程序:
private static void Main(string[] args)
{
var directoryName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Directory");
if (Directory.Exists(directoryName))
Directory.Delete(directoryName, true);
Directory.CreateDirectory(directoryName);
var stream = File.Create(Path.Combine(directoryName, "File")); //throws
stream.Close();
}
当您简单地执行这个程序时,这可以正常工作。如果您在 Windows 资源管理器中浏览 Directory 然后运行,就会发生奇怪的事情。在这种情况下,我得到 UnautorizedAccessException "Access to the path 'C:\Users\rfurman\AppData\Roaming\Directory\File' is denied."
如果这很奇怪,那么在相同的条件下执行:
private static void Main(string[] args)
{
var directoryName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Directory");
if (Directory.Exists(directoryName))
Directory.Delete(directoryName, true);
var value = Directory.Exists(directoryName);
Console.WriteLine(value);
Console.ReadKey();
}
如果Directory 在资源管理器中打开,此程序将打印True。
我想知道为什么会发生这种情况以及如何防范这种情况。
我使用 Windows 7 和 .net 4。
【问题讨论】:
-
"如果你浏览那个目录"是什么意思?
-
@Luftwaffe:在 Windows 资源管理器中打开该文件夹
-
所以你的意思是..文件夹在资源管理器中保持打开..对吗?
-
程序执行时打开。
-
文件夹真的被删除了吗?
标签: c# windows-explorer