2011-09-30 36 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); 

强制字符串文字。