【问题标题】:UnauthorizedAccessException when writing text file to C:\ on Windows 7在 Windows 7 上将文本文件写入 C:\ 时出现 UnauthorizedAccessException
【发布时间】:2011-09-26 16:47:18
【问题描述】:

我最近迁移到 Windows 7。现在我的 .NET 应用程序无法将日志文件写入 C:\

我的 TraceListener 正在抛出异常。

A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll

怎么办?我正在从工作室运行应用程序,所以我认为它必须继承我的所有权利,我是我电脑上的管理员。

【问题讨论】:

    标签: .net windows-7 file-io uac


    【解决方案1】:

    如果您启用了 UAC,您将无法将文件写入 C:\,即使您是管理员,除非您以提升模式启动程序以激活管理员权限。

    文件不应该真正放在C: 的根目录下,所以最好是创建一个子目录并授予自己访问权限(访问您的帐户,而不是管理员组)。如果您确实希望在C:\ 上拥有该文件并且不以提升权限运行它,您可以使用 Windows 资源管理器授予自己(您的帐户,而不是管理员组)对 C:\ 的写入权限。

    【讨论】:

    • UAC 的工作原理是禁用您的管理员权限,直到您激活它们。这是一种防止恶意程序修改敏感系统文件的安全措施。 Windows 7 上的默认设置是启用它。更多详情:en.wikipedia.org/wiki/User_Account_Control
    • 如果你不知道什么是 UAC,也许你应该多学一点编程知识。
    【解决方案2】:

    您的程序需要以所需的权限运行。只有具有管理员权限的用户才能写入“特殊”文件夹,例如系统驱动器,因此应用程序最初需要以提升的权限执行。

    有关代码中的安全权限的信息,请参阅 herehere

    【讨论】:

    • 通过运行提升来解决此问题是错误的方法。在其他地方记录是一个更好的解决方案。
    【解决方案3】:

    您可能仍然打开了 UAC。

    您需要在 app.config 中指明您希望进程使用提升的权限。

    默认生成的 app.config 有该信息。

    【讨论】:

    • 哦,配置中的那个选项在哪里?
    • 不在 app.config 中,而是在您的清单中。但是,运行提升的应用程序以便您可以登录 C 的根目录是大材小用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多