Здравствуйте, Mahoney, Вы писали:
M>Приветствую, коллеги.
M>Есть необходимость изменять и шифровать конфигурационный файл другого приложения.
M>Я открываю конфигурацию методом ConfigurationManager.OpenExeConfiguration(), параметризованным путём до сборки. Всё открывается, читается, шифруется, но при попытке сохранить конфигурацию, метод Save выбрасывает исключение, что, мол, объект уже существует и может быть изменён только на уровне где он был создан. Как-то это можно обойти?
Ну вот у меня такое работает:
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
ConnectionStringsSection section = config.GetSection(ConfigurationSectionName) as ConnectionStringsSection;
if (section == null)
{
section = new ConnectionStringsSection();
section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToLocalUser;
config.Sections.Add(ConfigurationSectionName, section);
}
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
}
config.Save();