【问题标题】:Access Permission for app.config on InstallshieldInstallshield 上 app.config 的访问权限
【发布时间】:2015-09-21 16:49:02
【问题描述】:

在我的 Windows 窗体应用程序中,我将一些应用程序主题信息保存到 app.config <appSettings/> 部分,我使用这样读取 app.config

 var config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

它有效。但是一旦我在保存设置时使用 installshield 创建了安装程序,它会显示文件访问权限被拒绝,因为应用程序安装到 C:\Program Files (x86)

当我使用 installshield 时如何在 app.config 上启用访问权限,或者如果我做错了什么是最佳实践。

问候

【问题讨论】:

  • 您确定权限错误是由于“程序文件(x86)”中存在的应用程序造成的吗?我怀疑发生错误是因为用户无权修改该 Program Files 文件夹中的文件。另外,您是否建议应用程序本身写入 app.config 文件?
  • 是的应用程序写入 app.config 但异常消息显示加载配置文件时发生错误:访问路径“C:\Program Files (x86)\Lush\gmjyyayu.tmp”是否认。 (C:\Program Files (x86)\Lush\SmsAlertRemainder.exe.config) ---> System.UnauthorizedAccessException: 访问路径 'C:\Program Files (x86)\Lush\gmjyyayu.tmp' 被拒绝。
  • 这并不排除我的怀疑。如果您尝试直接在目标计算机上编辑 app.config (yourapp.exe.config),例如在记事本中,它是否允许您保存对文件的更改,或者您是否还会收到权限错误?如果是这样,那就有问题了。
  • 是的,它甚至不允许在记事本中编辑

标签: c# .net winforms


【解决方案1】:

仅由管理员用户运行的应用程序将对 Program Files 文件夹(或 Program Files x86)中的文件具有修改权限。因此,最佳实践是将应用程序保存的设置存储在单独的设置文件中,该文件存储在用户的 AppData 文件夹中。然后,不同的用户可以有自己的值,存储在他们各自的文件中,并且 app.config 文件可用于存储所有用户的默认值。

this 帖子的答案提供了有关如何实现存储用户设置的机制的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    相关资源
    最近更新 更多