【发布时间】:2012-09-04 21:20:20
【问题描述】:
我在我的 app.config 中尝试使用自定义配置部分时遇到以下问题。我使用自定义配置部分来跟踪我想用我的程序备份的文件夹选择,如下所示:
<CustomConfigSection>
<BackupLocations>
<clear />
<add path="C:\Users\Marcel\Documents\" />
</BackupLocations>
</CustomConfigSection>
现在,每当我保存配置文件时,都会出现以下异常:
System.Configuration.ConfigurationErrorsException:发生错误 加载配置文件:访问路径C:\Program Files (x86) \ Backup Solutions \ uqhuxi1j.tmp 被拒绝。 (C:\Program Files (x86)\Backup Solutions\ BS.exe.Config) ---> System.UnauthorizedAccessException
我使用的代码是:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
CustomConfigSection section = (CustomConfigSection)config.GetSection("CustomConfigSection");
section.BackupLocations.Add(element);
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
这在以管理员身份登录时可以正常工作,并且仅在 PC 上配置了多个帐户时才会发生,因此这意味着这是 UAC/权限问题。 作为普通用户,我没有该文件夹的正确写入权限。
现在回答我的问题:
用户设置如何保存到 AppData 并且自定义配置部分试图保存在 ApplicationFolder/exe.config 中?如何让我的自定义部分也保存到 AppData 配置文件中?
我需要能够为每个用户保存我的数据,无论权限如何。那么我可以使用自定义配置部分来实现这一点,还是需要不同的方法?最好我也想将我的自定义部分保存到 AppData 配置文件中。我不想在我的安装程序中使用技巧来调整对我的应用程序文件夹的权限以允许它写入。 最重要的是,我不想在启动我的程序时要求管理员权限!
感谢您的回复,非常感谢。
【问题讨论】:
标签: c# configuration sections