C# ini文件读取、软件初始化和配置

开发过程中遇到这样的问题,设计的程序需要按照如下的流程运行:

1.程序启动,From_Load中读取配置文件,初始化全局连接字符串,系统运行。

2.启动配置窗体,读取配置信息,显示;修改,保存,(系统重新加载运行)

3.重启

解决方法,通过ini配置文件存取配置信息,主要是数据库的连接字符串;读取ini文件,运行程序;

启动配置,读取ini中的配置信息并显示。

在界面中修改,保存配置信息。

C#读取ini文件的类,运用了系统kernel32内核的API。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 namespace KJTransplant
 7 {
 8     class GFileINI
 9     {
10         // 声明INI文件的写操作函数 WritePrivateProfileString()
11         [System.Runtime.InteropServices.DllImport("kernel32")]
12         private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
13 
14         // 声明INI文件的读操作函数 GetPrivateProfileString()
15         [System.Runtime.InteropServices.DllImport("kernel32")]
16         private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
17         private string sPath = null;
18 
19         public string Path
20         {
21             get { return sPath; }
22             set { sPath = value; }
23         }
24         public GFileINI()
25         {
26         }
27         public GFileINI(string path)
28         {
29             this.sPath = path;
30         }
31         public void Write(string section, string key, string value)
32         {
33             // section=配置节,key=键名,value=键值,path=路径
34             WritePrivateProfileString(section, key, value, sPath);
35         }
36         public string ReadValue(string section, string key)
37         {
38             // 每次从ini中读取多少字节
39             System.Text.StringBuilder temp = new System.Text.StringBuilder(255);
40             // section=配置节,key=键名,temp=上面,path=路径
41             GetPrivateProfileString(section, key, "", temp, 255, sPath);
42             return temp.ToString();
43         }
44         /// <summary> 
45         /// 验证文件是否存在 
46        /// </summary> 
47         /// <returns>布尔值</returns> 
48         public bool ExistINIFile()
49         {
50             return File.Exists(sPath);
51         }
52 
53 
54     }
55 }

系统实现的部分代码:

初始化系统参数

 1 /// <summary>
 2         /// 初始化系统参数
 3         /// </summary>
 4         private void InitialSysPrams()
 5         {
 6             strConn = ini.ReadValue("ShareDir", "Dir");
 7             fileSystemWatcher1.Path = strConn;
 8             string strDataSource = ini.ReadValue("Setting", "DataSource");
 9             string strUserId = ini.ReadValue("Setting", "UserId");
10             string strPassWord = ini.ReadValue("Setting", "PassWord");
11             string strConnOrcl = string.Format("Data Source ={0}; User Id ={1}; Password ={2}; Integrated Security = no", strDataSource, strUserId, strPassWord);
12             strDestinyConn = strConnOrcl;
13             OracleHelper.connectionString = strDestinyConn;//启动初始化数据库连接字符串
14         }

读取参数显示

1  private void ReadParms()
2         {
3            ucOracleConn1.SDataSource =ini.ReadValue("Setting", "DataSource" );
4            ucOracleConn1.SUserSetting", "UserId" );
5            ucOracleConn1.SPassWord =ini.ReadValue("Setting", "PassWord");
6            ucOracleConn1.Reset();
7         }

保存参数

 1 /// <summary>
 2         /// 保存参数
 3         /// </summary>
 4         private void SaveParms()
 5         {
 6             ini.Write("Setting", "DataSource", ucOracleConn1.SDataSource);
 7             ini.Write("Setting", "UserId",ucOracleConn1.SUserId );
 8             ini.Write("Setting", "PassWord", ucOracleConn1.SPassWord);         
 9             //FileStream fs = new FileStream(configFileName, FileMode.Open, FileAccess.Write);
10             //using (StreamWriter sr = new StreamWriter(fs, Encoding.Default))
11             //{
12             //    String line;
13             //    // Read and display lines from the file until the end of the file is reached.
14             //    sr.WriteLine("[DataSource] " + dic["[DataSource]"]);
15             //    sr.WriteLine("[UserId] " + dic["[UserId]"]);
16             //    sr.WriteLine("[PassWord] " + dic["[PassWord]"]);
17 
18             //}
19             //fs.Close();
20         }