错误:mscorlib.dll中发生未处理的“System.UnauthorizedAccessException”类型exception

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

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

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

   

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

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

 File.SetAttributes(startupDirectory, FileAttributes.Normal); 

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

提前致谢!

尝试

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

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

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

尝试为您正在读取/保存文件的.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 

这肯定会解决Access拒绝问题

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

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

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

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

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

试试这个:

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

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