【问题标题】:'Access denied' to an xml file in windows application对 Windows 应用程序中的 xml 文件的“访问被拒绝”
【发布时间】:2011-12-30 02:56:21
【问题描述】:

在我的 .net windows 应用程序中,我正在使用 xml 文件。 但是 after installing the application 通过创建设置,而我正在运行 that 'Access Denied' to that xml 显示文件消息。

我正在使用System.IO.File 方法进行文件操作。

如果有人知道解决方案,请分享。

【问题讨论】:

  • xml 文件在哪里?在应用程序目录中?
  • 尝试提升运行程序?如果这解决了问题,您应该将您的文件存储在Program Files 之外的某个位置,在那里您具有非提升的写访问权限。 (例如用户的个人资料)。看到这个问题:stackoverflow.com/questions/2362946/…
  • @Yahia:是的。在应用程序目录中,words.xml 中有一个名为 XMl 的文件夹
  • 你如何给出路径是相对路径?能贴出相关代码吗?
  • Application.StartupPath+"\\xml\\words.xml"。像这样。

标签: c# winforms file file-io permissions


【解决方案1】:

对程序目录的写访问受到越来越多的限制(从 XP/Vista 开始),因为这存在安全风险!

我建议在您的程序目录中将该文件的“基本版本”设为只读...

在您的应用程序启动时,您检查它是否存在于ApplicationDataLocalApplicationDataCommonApplicationData - (要在运行时获取真实路径,请使用Environment.GetFolderPath)。如果它不存在,则将其复制到那里 - 在这些位置,您的应用程序默认具有写入权限,无需管理员权限。

【讨论】:

    【解决方案2】:

    Program Files 文件夹的访问权限有限,可由管理员帐户修改。我建议您将 xml 文件保存在 *C:\Users\YourPCName\AppData\Local\YourAppFolder* 中。

    这样您就可以访问和修改文件

    【讨论】:

    • 不是很多程序的 Program Files 文件夹中都有配置/设置文件,可以在程序中修改吗?
    • 这些应用程序以管理员权限启动,这就是它们能够执行这些操作的原因。他可以通过嵌入自定义清单(项目属性 -> 构建 -> 清单)强制他的应用程序在管理员权限下启动来做到这一点
    • @Jack 过去可能 - 但自从 Vista 安全性越来越严格,尤其是。程序文件夹内的写入权限受到限制...
    【解决方案3】:

    我曾经遇到过这个问题,所以我使用了独立存储并解决了我的问题。根据您的情况,它可能适合您,也可能不适合您,但这里有一个关于如何使用它的快速教程:

    http://www.codeproject.com/KB/dotnet/IsolatedStorage.aspx

    【讨论】:

    • 如果这对您来说是一个适用的解决方案,那么它将使您不必告诉人们他们必须以管理员身份运行您的应用程序。
    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多