Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存自定义配置节将导致System.UnauthorizedAccessException_C#_Configuration_Sections - Fatal编程技术网

C# 保存自定义配置节将导致System.UnauthorizedAccessException

C# 保存自定义配置节将导致System.UnauthorizedAccessException,c#,configuration,sections,C#,Configuration,Sections,我在尝试使用app.config中的自定义配置部分时遇到以下问题。我使用一个自定义配置部分来跟踪我想用我的程序备份的文件夹的选择,如下所示: <CustomConfigSection> <BackupLocations> <clear /> <add path="C:\Users\Marcel\Documents\" /> </BackupLocations> </CustomCon

我在尝试使用app.config中的自定义配置部分时遇到以下问题。我使用一个自定义配置部分来跟踪我想用我的程序备份的文件夹的选择,如下所示:

<CustomConfigSection>
    <BackupLocations>
        <clear />
        <add path="C:\Users\Marcel\Documents\" />
    </BackupLocations>
</CustomConfigSection>
当以管理员身份登录时,这种情况可以正常工作,并且只在PC上配置了多个帐户时才会发生,因此这意味着这是UAC/权限问题。作为普通用户,我没有该文件夹的正确写入权限

现在回答我的问题:

为什么用户设置会保存到AppData,而自定义配置部分正试图保存到ApplicationFolder/exe.config中?如何将自定义节也保存到AppData配置文件中?

我需要能够为每个用户保存数据,而不考虑权限。那么,我可以使用自定义配置节来实现这一点,还是需要一种不同的方法?我最好也将我的自定义部分保存到AppData配置文件中。我不想在我的安装程序中使用技巧来调整对我的应用程序文件夹的权限以允许其写入。最重要的是,我不想在启动我的程序时要求管理员权限


感谢您的回复,非常感谢。

用户范围的设置会保存到AppData,因为用户有在那里写入的权限。用户没有写入程序文件的权限。使用用户范围的设置将其保存到AppData。更多细节,请参阅。

睡了一夜好觉后,我似乎自己已经找到了答案

配置保存在AppData目录中,用于版本和用户特定数据。实际上,我所做的是直接打开exe.config,而不做任何关于用户范围设置的事情,更不用说写入程序当前版本的AppData配置文件了。当我意识到这一点时,我知道应该在谷歌上寻找什么

我发现这些文章:

试验和下载该项目的源文件对我帮助很大,并提供了我所需要的东西。所以基本上我实现了我想要做的错误功能

感谢读者,也感谢里奇先生让我走上了正确的方向

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
CustomConfigSection section = (CustomConfigSection)config.GetSection("CustomConfigSection");

section.BackupLocations.Add(element);

section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);