2011-05-16 71 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