【问题标题】:Error: An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll错误:mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常
【发布时间】:2014-12-18 21:11:27
【问题描述】:

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

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+。我该怎么做?

提前致谢!

【问题讨论】:

  • 源文件名是什么?你在 startupDirectory 变量中提到过吗?
  • 标题中的一个 solved 对任何人都没有帮助。如果您找到了除了给定答案之外的解决方案,您可以回答自己的问题并将其标记为已接受的答案。这样其他遇到同类问题的人也会得到帮助。

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    试试

    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
    

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

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

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

    【讨论】:

    • 我对第一个选项感到困惑...第二个和第三个不起作用,第四个我找不到选择 IIS_IUSRS
    • @Tyler13579 将完全控制权交给用户
    • 完全控制已被选中并显示为灰色,所以我无法更改它
    • 第二个选项给了我这个错误在 mscorlib.dll 中发生了“System.IO.IOException”类型的未处理异常附加信息:目标文件“C:\Users\Tyler\AppData\Roaming\ Microsoft\Windows\Start Menu\Programs\Startup”是一个目录,而不是一个文件。
    【解决方案3】:

    试试这个:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2015-05-12
        相关资源
        最近更新 更多