配置.保存操作对某些机器不起作用
本文关键字:机器 不起作用 作对 保存 操作 配置 | 更新日期: 2023-09-27 18:00:06
我有一个C#可执行文件,在运行时读取并更新它的配置文件(app.exe.config),特别是"appSettings"部分。在我对两个键值进行了两次更改并使用Configuration.save()方法保存它们之后,会抛出一个"访问路径"错误,但仅在一些用户的机器上(到目前为止,10000个报告中有2个)。我们从未在内部看到过这个问题,只是在生产中。
Configuration.Save()方法似乎是基于我们程序的日志文件的问题。当此调用出现问题时,会出现"ConfigurationErrorsException",因为无法将配置文件写入,或者配置文件已更改。配置文件与应用程序位于同一目录中。这是一个运行在Windows7电脑上的DotNet4应用程序。
代码为:
Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configuration.AppSettings.Settings["Last Updated Package"].Value = packageVersion;
configuration.AppSettings.Settings["Copy Updated Files"].Value = bool.TrueString;
configuration.Save(ConfigurationSaveMode.Minimal);
ConfigurationManager.RefreshSection("appSettings");
错误为:
加载配置文件时出错:拒绝访问路径"C:''Program Files(x86)''My Program''bin''guaixcax.tmp"。(C:''Program Files(x86)''My Program''bin''MyProgram.exe.Config)
这是权限问题吗?或者我可以在代码或配置文件中添加一些内容来解决这个问题吗?
我在安装.NET程序时也遇到过类似的问题。这一直是一个权限问题。要测试这是否是您的问题,您应该尝试以无特权用户的身份运行应用程序——开发人员往往拥有管理员权限。。。只要他们能管理。
如果失败,请编辑配置文件的安全性(作为管理员),以允许"用户"组对您的"bin"文件夹进行写访问,然后重试。如果有效,则表明您已发现问题。然后你可以找出什么是最好的解决方案。一些选项是:
- 从安装程序设置对必要文件/文件夹的访问权限,以便为将运行应用程序的用户工作
- 以具有管理权限的用户身份运行应用程序(从安全最佳实践的角度来看,这不是一个好主意)
-
与其修改主应用程序设置文件,不如创建一个单独的设置部分,引用一个包含可更改数据的文件:
<configuration> <configSections> ... <section name="MyChangableSettings" type="My.Namespace, ChangableSettingsClass"/> </configSection> ... <MyChangableSettings configSource="Path'To'Writable'StorageDir'mySettings.config"/> </configuration>