2011-05-16 76 views
1

我书面方式一个简单的程序,在C驱动器通过使用下面的代码访问路径移动目录时被拒绝,但能够在目录

System.IO.Directory.Move(DirectoryA, DirectoryB); 
移动Directory中的在C盘目录B到创建文件夹

奇怪的是,它抛出一个异常,说对目录A的访问被拒绝。

但是,我试图在目录A中创建一个文件夹,由System.IO.Directory.CreateDirectory(DirectoryA+ @"\test");。我在DirectoryA内创建测试目录没有问题,所以我想这不是一个权限问题。

所以我不知道是什么问题,该代码是以前的工作,所以没有任何人有任何想法可言,谢谢:)

+0

您可能访问_in_ DirectoryA,但您想要删除/重命名DirectoryA本身。这是另一回事。你确定你被允许这么做吗? – 2011-05-16 16:02:55

+0

你正在使用哪个Windows版本? – 2011-05-16 16:04:44

+0

下面的答案是对的钱,但如果你需要深入探讨具体的用户权利问题,我会尝试** [超级用户](http://www.superuser.com)** – WEFX 2011-05-16 16:08:03

回答

3

Windows区分“创建”和“修改”权限;你可以有权做一个而不是另一个。 IIRC,“删除”,这是从一个给定的地方“移动”一个文件夹(基本上在那个地方删除它并在另一个地方创建它)所需要的也是独立的;它实际上是一种特殊的权限,可以通过自己授予或授予“完全控制权”。

+0

哦,谢谢。虽然之前它的工作很完美,但我已经改变了一些与此无关的其他代码,但之后它就停止了工作。这让我感到困惑。但是我可以手动删除文件夹,所以它意味着我有权访问?我找不到Directory.copy方法,这种方法存在吗? (我很好,只需复制目录)..很多再次感谢 – RKM 2011-05-16 16:48:10

+0

您个人作为该计算机的特定用户可能会正常或具有提升的权限删除或移动文件夹。但是,使用其中一个服务用户(LocalService或NetworkService)运行的程序,或者您的用户WITHOUT标高可能不会。这一切都取决于RBS设置和程序运行的用户上下文。 – KeithS 2011-05-16 16:57:07

+0

哦,非常感谢,复制到另一个目录对我来说是好的..所以我只是改变我的程序来做到这一点...再次感谢:) – RKM 2011-05-16 17:01:25

1

移动基本上是一个复制和删除等操作,对不对?而用于删除目录并向其添加子目录的ACL权限将是不同的权限。所以我想你理论上可以拥有正确的权限来修改目录,但不能删除它。您是否确认了DirectoryA的安全权限?

+0

在同样的驱动器(根据作者的'C:')和忽略路口/挂载的卷等,它应该是一个重命名afaik,而不是复制/删除。 – 2011-05-16 16:08:43