Mar*_*lik 5 c# configuration sections
我在app.config中尝试使用自定义配置部分时遇到以下问题.我使用自定义配置部分来跟踪我想用我的程序备份的文件夹选择,如下所示:
<CustomConfigSection>
<BackupLocations>
<clear />
<add path="C:\Users\Marcel\Documents\" />
</BackupLocations>
</CustomConfigSection>
Run Code Online (Sandbox Code Playgroud)
现在,每当我保存配置文件时,我都会遇到以下异常:
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);
Run Code Online (Sandbox Code Playgroud)
以管理员身份登录时这种方法很有效,只有在PC上配置了多个帐户时才会发生这种情况,这意味着它是一个UAC /权限问题.作为普通用户,我没有该文件夹的正确写入权限.
现在我的问题:
为什么用户设置保存到AppData,而自定义配置部分试图保存在ApplicationFolder/exe.config中?如何将我的自定义部分保存到AppData配置文件中?
我需要能够为每个用户保存我的数据,无论权限如何.那么我可以使用自定义配置部分实现这一点,还是需要不同的方法?我最好也将自定义部分保存到AppData配置文件中.我不想在我的安装程序中使用技巧来调整我的应用程序文件夹的权限以允许它写入.最重要的是,我不想在启动程序时需要管理员权限!
感谢您的回复,非常感谢.
经过一夜良好的睡眠后,我自己似乎已经偶然发现了答案。
配置保存在 AppData 目录中以获取版本和用户特定数据。我所做的实际上是直接打开 exe.config,并且没有执行任何有关用户范围设置的操作,更不用说写入程序当前版本的 AppData 配置文件了。当我意识到这一点时,我知道要在谷歌上寻找什么。
我找到了这些文章:
Windows 窗体 - 在 C# 中创建和保留自定义用户设置
Windows 窗体 - 在 C# 中创建和保留自定义用户设置 - 第 2 部分
实验和下载该项目的源文件对我帮助很大,并为我提供了我所需要的东西。所以基本上我为我想做的事情实现了错误的功能。
感谢读者,也感谢里奇先生在某种程度上引导我走向正确的方向。
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |