http msdn microsoft com en-us library system configuration configurati

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx
// Открываем произвольный файл.
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = "WinFormsTest.exe.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
Console.WriteLine("configuration file by path: {0}", config.FilePath);
// * Меняем connection strings
ConnectionStringsSection csec = config.ConnectionStrings;
// We want to ensure that this guy came from the file we provided.. and not from say machine config
if (csec.ElementInformation.Source != null && csec.ElementInformation.Source.Equals(config.FilePath))
{
for (int i = csec.ConnectionStrings.Count - 1; i >= 0; i--)
{
ConnectionStringSettings connection = csec.ConnectionStrings[i];
if (connection.ElementInformation.Source == null || !connection.ElementInformation.Source.Equals(config.FilePath))
{
continue;
}
connection.ConnectionString = connection.ConnectionString + " ";
// Можно удалить, если не нужна.
// csec.ConnectionStrings.RemoveAt(i);
}
}
config.Save(ConfigurationSaveMode.Modified);
// * Меняем настройки приложения.
// Проверяем, есть ли нужная группа.
var group = config.GetSectionGroup("applicationSettings");
if (group == null || !group.IsDeclared)
{
// Если нет, создаём.
config.SectionGroups.Add("applicationSettings", new ApplicationSettingsGroup());
group = config.GetSectionGroup("applicationSettings");
}
var asg = (ApplicationSettingsGroup)group;
// Есть ли нужная секция?
ConfigurationSection sec = asg.Sections.Get("WinFormsTest.Properties.Settings");
if (sec == null)
{
// Если нет, создаём.
sec = new ClientSettingsSection();
asg.Sections.Add("WinFormsTest.Properties.Settings", sec);
}
var clsec = (ClientSettingsSection)sec;
// Есть ли нужная настройка?
SettingElement elem = clsec.Settings.Get("FrmCaption");
if (elem == null)
{
// Если нет, создаём.
clsec.Settings.Add(new SettingElement("FrmCaption", SettingsSerializeAs.String));
elem = clsec.Settings.Get("FrmCaption");
// И устанавливаем значение.
XmlElement val = new XmlDocument().CreateElement("value");
val.InnerText = "1";
elem.Value.ValueXml = val;
}
else
{
// Если есть, меняем значение.
elem.Value.ValueXml.InnerText = elem.Value.ValueXml.InnerText + "1";
}
config.Save(ConfigurationSaveMode.Modified);
// * Пользовательские настройки.
// С ними всё так же, как с настройками приложения, но
// вместо applicationSettings надо писать userSettings.