错误:mscorlib.dll中发生未处理的"System.UnauthorizedAccessException"类型异常

Nul*_*one 6 c# copy file winforms windows-7-x64

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

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

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

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)

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

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

File.SetAttributes(startupDirectory, FileAttributes.Normal);
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

Mid*_*dan 2

尝试

public static void Copy(string sourceFileName, string destFileName);
Run Code Online (Sandbox Code Playgroud)

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

File.Copy("Startup.exe",startupDirectory);
Run Code Online (Sandbox Code Playgroud)

尝试将您正在读取/保存文件的 .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
Run Code Online (Sandbox Code Playgroud)

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

UnauthorizedAccessException 意味着以下三件事之一:

  • 调用者没有所需的权限。
  • 路径是一个目录。
  • 路径指定了一个只读文件。