C # manually read and write the app config source code,
Public class ConfigOperator {public string strFileName; public string configName; public string configValue; public ConfigOperator () {// TODO: add the constructor logic //} public string ReadConfig1 (string configKey) {configValue = ""; configValue = ConfigurationSettings. appSettings ["+ configKey +" "]; return configValue;} // obtain the config file name of the program and its full path public void SetConfigName (string strConfigName) {configName = strConfigName; // obtain the full path of the configuration file GetFullPath ();} public void GetFullPath () {// obtain the full path of the configuration file strFileName = AppDomain. currentDomain. baseDirectory. toString () + configName;} public void SaveConfig (string configKey, string configValue) {XmlDocument doc = new XmlDocument (); doc. load (strFileName); // find all elements named "add" XmlNodeList nodes = doc. getElementsByTagName ("add"); for (int I = 0; I <nodes. count; I ++) {// obtain the key attribute XmlAttribute att = nodes [I] of the current element. attributes ["key"]; // determines whether the current element is the target element if (att. value = "" + configKey + "") {// assign att = nodes [I] to the second attribute in the target element. attributes ["value"]; att. value = configValue; break ;}// Save the modified doc above. save (strFileName);} public string ReadConfig (string configKey) {string tempStr = ""; XmlDocument doc = new XmlDocument (); doc. load (strFileName); // find all elements named "add" XmlNodeList nodes = doc. getElementsByTagName ("add"); for (int I = 0; I <nodes. count; I ++) {// obtain the key attribute XmlAttribute att = nodes [I] of the current element. attributes ["key"]; // determines whether the current element is the target element if (att. value = "" + configKey + "") {// assign att = nodes [I] to the second attribute in the target element. attributes ["value"]; tempStr = att. value ;}}// Save the above modification return tempStr ;}}