ConfigurationManager Save()想要创建一个tmp-File

我遇到了想要写入.exe.config的应用程序的问题。

请参阅以下代码:

using System; using System.Configuration; using System.IO; namespace ConfigurationManagerError { class Program { static void Main(string[] args) { try { // set Config-File to persistent folder ExeConfigurationFileMap exeMap = new ExeConfigurationFileMap(); exeMap.ExeConfigFilename = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "ConfigError\\ConfigurationManagerError.exe.config"); Configuration config = ConfigurationManager.OpenMappedExeConfiguration(exeMap, ConfigurationUserLevel.None); config.AppSettings.Settings.Add( new KeyValueConfigurationElement("TestKey", "TestValue")); config.Save(ConfigurationSaveMode.Modified); Console.WriteLine("Successfully write of Configuration-File to " + config.FilePath); } catch (Exception ex) { Console.WriteLine(ex); } Console.Read(); } } } 

只要我作为具有读写访问权限的用户运行该文件夹一切正常。 如果我的用户在该文件夹中没有写入权限,则会出现一个exception,指出不允许写入.exe.config的权限。 到目前为止,一切都如预期。

但是,如果我现在有一个用户有权写入现有文件而不是创建新文件 ,则会抛出exception

 Access to the path 'C:\ProgramData\ConfigError\ila2ba_0.tmp' is denied 

看起来ConfigurationManager想要创建一个tmp-File。 怎么解决这个问题?

非常感谢! 最诚挚的问候,Joerg

需要多次重写的用户特定配置设置应保存在用户的应用程序数据目录下。

您可以在应用程序中安装通用应用程序配置,该配置可以与用户特定的配置合并,并且可以根据您的要求覆盖所需的配置设置。