配置.保存操作对某些机器不起作用



我有一个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="PathToWritableStorageDirmySettings.config"/>
    </configuration>
    

相关内容

最新更新