using System; using System.Diagnostics; using System.Configuration; namespace ChangeAppConfigProperty { class ChangeAppConfigProperty { private static string pathToExeFile; private static string keyName; private static string newValue; static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine("Updates an application configuration setting file property."); Console.WriteLine("Usage: ChangeAppConfigProperty.exe /exeFile:{PathToExe.exe} /key:{AppSettingsKeyName} /value:{newValue} [/debug]"); } foreach (string arg in args) { if (arg.ToUpperInvariant().Contains("/exeFile:".ToUpperInvariant())) { pathToExeFile = arg.Split(':')[1]; } if (arg.ToUpperInvariant().Contains("/key:".ToUpperInvariant())) { keyName = arg.Split(':')[1]; } if (arg.ToUpperInvariant().Contains("/value:".ToUpperInvariant())) { newValue = arg.Split(':')[1]; } if (arg.ToUpperInvariant().Contains("/debug".ToUpperInvariant())) { Debugger.Break(); } } //save a backup copy first. var cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile); cfg.SaveAs(cfg.FilePath + "." + DateTime.Now.ToFileTime() + ".bak"); //reopen the original config again and update it. cfg = ConfigurationManager.OpenExeConfiguration(pathToExeFile); var setting = cfg.AppSettings.Settings[keyName]; setting.Value = newValue; //save the changed configuration. cfg.Save(ConfigurationSaveMode.Full); } } }