Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# File.Copy引发UnauthorizedAccessException_C#_.net_Tfs - Fatal编程技术网

C# File.Copy引发UnauthorizedAccessException

C# File.Copy引发UnauthorizedAccessException,c#,.net,tfs,C#,.net,Tfs,我想知道是否还有其他人有类似的问题 我的应用程序中有一个简单的文件副本代码,可以简化如下(我打开VS2013调试代码的用户对源文件夹和目标文件夹层次结构都有完全的控制权-由于某种原因,情况并非如此,我尝试在管理模式下运行VS,但不起作用,然后我手动将完全控制权应用于用户,不管怎样,错误都会抱怨源文件夹) 这段代码运行得很愉快,直到今天我在我的本地机器上尝试了它(并且仍然在我的测试床机器上工作)。但出于某种原因,它开始抛出以下错误: System.UnauthorizedAccessExcepti

我想知道是否还有其他人有类似的问题

我的应用程序中有一个简单的文件副本代码,可以简化如下(我打开VS2013调试代码的用户对源文件夹和目标文件夹层次结构都有完全的控制权-由于某种原因,情况并非如此,我尝试在管理模式下运行VS,但不起作用,然后我手动将完全控制权应用于用户,不管怎样,错误都会抱怨源文件夹)

这段代码运行得很愉快,直到今天我在我的本地机器上尝试了它(并且仍然在我的测试床机器上工作)。但出于某种原因,它开始抛出以下错误:

System.UnauthorizedAccessException: Access to the path 'C:\tfs\Dev\Source\some-module\bin\Debug' is denied.
Result StackTrace:  
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
考虑到可能是文件锁定问题,我重新启动并再次尝试,但失败了

源文件夹具有只读属性,并且认为这可能是一个问题(这很奇怪),我开始尝试取消设置它,但无法。然后我将文件夹从tfs工作区移动到另一个文件夹(在c:\users\my user..下),但仍然无法删除只读属性(这似乎有效,但再次检查会在文件上显示相同的属性)。我甚至疯狂地尝试在所有父文件夹上取消只读设置,然后放弃了,因为这与最初的问题没有任何关系

我反复检查了类似的问题和想法,我已经没有选择了

Win7、.net 4.5.2、VS2013是一些配置

其他实验,更新
我尝试在sourcefile目录上使用Directory.CreateDirectory,该目录具有对当前用户的完全权限的安全规则,但没有更改任何内容。为什么它会抱怨从sourcefile目录开始使用???

可能是该文件被阻止了吗?如果它是从Internet下载的,Windows将阻止它。然后,您需要转到t文件的属性,并在底部找到一个复选框,您可以取消阻止它


嗯。又发生了。在另一个地方出错了

我在问题中写下的简化代码没有显示实际的代码。我使用了一个环境变量作为源文件名,结果它指向的是一个文件夹,而不是一个文件


我认为这里的问题是Microsoft的未授权访问不够直观,无法理解您实际上试图复制一个目录而不是一个文件,结果您开始跟踪。无论如何,这里的情况可能会帮助其他人。不要忘了检查您正在复制的是一个目录还是一个文件。

这意味着当前用户没有在该目录中写入的权限。请首先设置运行应用程序的用户帐户的权限。建议:a)检查目标上不存在文件;b)请稍等一秒钟,然后重试,因为AV可能正在扫描该文件并临时阻止访问Niranjan,我在第一段中提到了对用户的完全控制。Jorge,关于AV的好主意,我会检查的!检查以上两种情况,并授予文件夹作为“所有人”属性的权限。禁用av可能会解决您的问题。删除它,或者,如果(听起来)您认为这对将来的其他人有用,请写一个好的答案并添加到此处。回答你自己的问题是一个受支持的概念,但你应该把答案作为答案,而不是隐藏在编辑你的问题。如果你认为这个问题可能有误导性的地方,也可以编辑它来改进。谢谢你的回答,但我已经指出了我在更新中的错误之处。非常好的观点,顺便说一句。
System.UnauthorizedAccessException: Access to the path 'C:\tfs\Dev\Source\some-module\bin\Debug' is denied.
Result StackTrace:  
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
   at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)