错误:未处理的类型' System.UnauthorizedAccessException'发生在mscorlib.dll中

时间:2014-12-18 21:11:28

标签: c# winforms file copy windows-7-x64

当我尝试将文件复制到某个位置时,这是崩溃并给我这个错误的部分。

string startupDirectory = "C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
File.Copy(startupDirectory, "Startup.exe");

我已在线阅读并尝试过管理员权限,并创建了一个" app.manifest"文件:

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

我确认在设置中,应用清单设置为此文件,但它仍然给我同样的错误。

我也试过这个活动,虽然我认为它不会起作用,因为它是一个目录而不是一个文件:

File.SetAttributes(startupDirectory, FileAttributes.Normal);

这是WinForms,我在Windows 7上,但也希望它适用于Windows 8+的世界。我该怎么做?

提前致谢!

4 个答案:

答案 0 :(得分:3)

此错误由Windows错误触发。它没有专门的“这绝对没有意义”错误代码,它只是产生一个“访问被拒绝”错误代码。哪个.NET转换为UnauthorizedAccessException。

这里的“毫无意义”问题是您尝试使用文件复制方法复制目录。目录不是文件。复制目录需要先创建一个新目录,然后复制目录中的所有文件。 .NET有一种方法,大多数C#程序员倾向于认为它是“错误的”命名空间。它是Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory()。

但是你需要多考虑一下这个问题,当然没有必要调用新目录“startup.exe”。可能意味着从启动目录中复制特定的文件,我们无法猜测它可能是什么。

答案 1 :(得分:2)

尝试

public static void Copy(string sourceFileName, string destFileName);

第一个重载是源第二个重载是目的地我认为原因可能是这个

File.Copy("Startup.exe",startupDirectory);

尝试将访问权限设置为&#34;完全控制&#34;对于您正在阅读/保存文件的.Net用户。

对于特定文件的IIS服务器中的访问拒绝错误,请按照以下步骤进行操作

1- Goto to C:\\Users\\Tyler\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup

2- Right click on your file -> Properties -> Pop Up of User properties appears -> click on Security tab-> click on Edit -> select Users-> tick on Allow Full Control -> Click Ok

这肯定会解决访问被拒绝的问题

UnauthorizedAccessException意味着以下三种情况之一:

  • 来电者没有所需的权限。
  • path是一个目录。
  • path指定了只读文件。

答案 2 :(得分:1)

试试这个:

    File.Copy(startupDirectory, "Startup.exe", true);
    File.SetAttributes("Startup.exe", FileAttributes.Normal);

答案 3 :(得分:1)

您可以使用管理权限运行Visual Studio。 (假设Windows7,在开始菜单中右键单击Visual Studio图标,然后单击&#34;以管理员身份运行&#34;)