2011-09-30 53 views
0

我用這樣一個例子:

System.IO.File.Copy("\\host\c$\folder\file.end", "c:\file.end", true); 

但我只得到一個DirectoryNotFoundException與描述

找不到部分路徑'\ host \ c $ \ folder \ file.end'

訪問DRIVE $資源上的文件需要做些什麼?我在機器上擁有管理權限。

+1

不要忘記,如果您想要在另一個環境中運行此文件或將其提供給其他用戶,則可能無法獲取該文件。 – Chris

+0

Chris,是的。但它是一個管理工具,因此需要管理員權限。我會在另一種情況下處理它。 – Override

回答

5

嘗試使用逐字字符串路徑

System.IO.File.Copy(@"\\host\c$\folder\file.end", @"c:\file.end", true); 

或逃避斜線

System.IO.File.Copy("\\\\host\\c$\\folder\\file.end", "c:\\file.end", true); 
+0

哇。我已經逃過了斜線(代碼示例是自由文本),但是當使用@時,它神奇地工作。使用額外的\和使用@有何區別? – Override

+0

@ user716748閱讀[此msdn頁面]上的逐字字符串(http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx) –

+0

@ user716748:您給我們的代碼示例上面沒有跳過的斜線......而@所做的簡單總結是這意味着只有引號需要被加倍(通過加倍),並且每個其他字符都被逐字處理,包括換行符等等。它的主要用途(在我看來)是用來寫道路,否則這些路徑可能會變成亂七八糟的逃跑。 :) – Chris

4

嘗試:

System.IO.File.Copy(@"\\host\c$\folder\file.end", @"c:\file.end", true); 

因爲你可以從異常路徑看是不是很好格式化。您需要轉義\符號。

1

嘗試

System.IO.File.Copy(@"\\host\c$\folder\file.end", @"c:\file.end", true); 

強制字符串文字。