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

时间:2014-07-08 14:54:46

标签: c# configurationmanager

我遇到了想要写入.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();
        }
    }
}

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

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

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

似乎ConfigurationManager想要创建一个tmp-File。 怎么解决这个问题?

非常感谢! 最好的祝福, 约尔格

1 个答案:

答案 0 :(得分:0)

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

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