Error: An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll

南笙酒味 提交于 2019-12-18 16:56:08

问题


This is the part that crashes and gives me this error is when I try to copy a file to a certain location.

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

I have read online and tried administrator rights and have created an "app.manifest" file:

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

I confirmed that in the settings, the app manifest is set to this file, but it still gives me the same error.

I have also tried this event though I didn't think it would work because it is a directory not a file:

File.SetAttributes(startupDirectory, FileAttributes.Normal);

This is WinForms and I am on windows 7 but also want it to world for windows 8+. How do I do this?

Thanks in advance!


回答1:


Try

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

First overload is source 2nd overload is destination i think reason might be this

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

Try setting the access permissions to "Full control" for the .Net user from where you are reading/saving the files.

For Access Denied Error in IIS server for particular file , please follow the below steps

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

This will surely solve the Access denied problem

An UnauthorizedAccessException means one of 3 things:

  • The caller does not have the required permission.
  • path is a directory.
  • path specified a read-only file.



回答2:


This exception is triggered by a Windows error. It does not have a dedicated "this make absolutely no sense" error code, it just produces an "access denied" error code. Which .NET translates to a UnauthorizedAccessException.

The "makes no sense" problem here is that you are trying to copy a directory with a file copy method. Directories are not files. Copying a directory requires creating a new directory first, then copying all of the files in the directory. .NET has a method for that, most C# programmers tend to think it is the 'wrong' namespace. It is Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory().

But you'll need to think a bit more about this problem, it of course doesn't make sense to call the new directory "startup.exe". A probably meant to copy a specific file from the Startup directory, we can't guess what it might be.




回答3:


Try this:

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



回答4:


You can run Visual Studio with Administrative Rights. (Assuming Windows7, Right-click on Visual Studio icon in the start menu and click "Run as Administrator")



来源:https://stackoverflow.com/questions/27555770/error-an-unhandled-exception-of-type-system-unauthorizedaccessexception-occur

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!