读写XML文件的类及注册表操作

读写系统配置信息在win32下常用注册表,在.net下可以沿用这种方法
using Microsoft.Win32;
RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RUN",true);
regKey.SetValue ("AutoSendLogMail", ExefileName); 
regKey.DeleteValue ("AutoSendLogMail",false);

但更好的方法是写到XML文件中,优点是修改和移植方便,并且可以将元素和类的属性进行映射,序列化与反序列化;
于是参考.Text中相关的类写了一个读写XML文件的类
用于WinForm程序
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Configuration;

namespace SendLogMail
{
    
public abstract class SystemConfiguration
    
{
        
public static SystemSettings GetSettings()
        
{            
            FileStream fs
=null;
            
string FileName="";
            SystemSettings data;
            XmlSerializer serializer 
= new XmlSerializer(typeof(SystemSettings));
            
try
            
{
                FileName 
= System.Windows.Forms.Application.StartupPath+"\\"+GetSettingsFile();                
                fs 
= new FileStream(FileName, FileMode.OpenOrCreate);    
                data 
= (SystemSettings)serializer.Deserialize(fs);                                
            }

            
catch (Exception err)
            
{
                System.Windows.Forms .MessageBox.Show (err.Message
+"系统配置文件出错:\r\n"+FileName);
                data 
= new SystemSettings();
            }
    
            
finally
            
{
                
if (fs!=null{ fs.Close();}                
            }

            
return data;
        }


        
public static void SaveSettings(SystemSettings data)
        
{
            FileStream fs
=null;
            
string FileName="";
            XmlSerializer serializer 
= new XmlSerializer (typeof(SystemSettings));             
            
try
            
{
                FileName  
= System.Windows.Forms.Application.StartupPath+"\\"+GetSettingsFile();
                fs 
= new FileStream(FileName, FileMode.Create);
                serializer.Serialize(fs, data);
            }

            
catch (Exception err)
            
{
                System.Windows.Forms .MessageBox.Show (err.Message
+"系统配置文件出错:\r\n"+FileName);                
            }
    
            
finally
            
{
                
if (fs!=null)
                
{
                    fs.Close();  
                }
                
            }

        }


        
private static string GetSettingsFile()
        
{
            
return ConfigurationSettings.AppSettings["SystemSettingsFile"];            
        }

    }
    
    
    
public class SystemSettings
    
{        
        
private string _txtSMTPHost;
        
private string _txtSPSHost;
                
        [XmlElement]
        
public string txtSMTPHost
        
{
            
get return _txtSMTPHost; }
            
set { _txtSMTPHost = value; }
        }
        
        [XmlElement]
        
public string txtSPSHost
        
{
            
get return _txtSPSHost; }
            
set { _txtSPSHost = value; }
        }
原文地址:https://www.cnblogs.com/zyk/p/115016.html