172 lines
6.2 KiB
C#
172 lines
6.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Runtime.InteropServices;
|
|
using System.IO;
|
|
|
|
namespace ITC81DB
|
|
{
|
|
public class IniFile
|
|
{
|
|
[DllImport("KERNEL32.DLL")]
|
|
private static extern bool WritePrivateProfileString(string IpAppName, string IpKeyName, string IpString, string IpFileName);
|
|
|
|
[DllImport("KERNEL32.DLL")]
|
|
private static extern uint GetPrivateProfileInt(string IpAppName, string IpKeyName, int nDefault, string IpFileName);
|
|
|
|
[DllImport("KERNEL32.DLL")]
|
|
static extern uint GetPrivateProfileString(string IpAppName, string IpKeyName, string IpDefault, StringBuilder IpReturnedString, int nSize, string IpFileName);
|
|
|
|
/// <summary>
|
|
/// Ini 파일 읽기
|
|
/// </summary>
|
|
/// <param name="IpAppName">값을 가져올 키가 속해있는 [섹션] 문자열</param>
|
|
/// <param name="IpKeyName">값을 가져올 키</param>
|
|
/// <param name="IpDefault">해당되는 값이 없을 경우, 기본값으로 리턴할 문자열</param>
|
|
/// <param name="filePath">읽어올 ini 파일 경로</param>
|
|
/// <returns>실패 : "" 반환</returns>
|
|
public static string GetIni(String IpAppName, string IpKeyName, string IpDefault, string filePath)
|
|
{
|
|
string ret = "";
|
|
string iniFile = filePath;
|
|
|
|
try
|
|
{
|
|
string readString = "";
|
|
string[] stringArray;
|
|
|
|
using (StreamReader sr = new StreamReader(filePath, Encoding.Default))
|
|
{
|
|
readString = sr.ReadToEnd();
|
|
sr.BaseStream.Position = 0;
|
|
|
|
// Key값이 포함된 Line을 읽을 경우
|
|
if (readString.Contains(IpKeyName) == true)
|
|
{
|
|
int length;
|
|
string[] text = readString.Split('\n');
|
|
for (int i = 0; i < text.Length; i++)
|
|
text[i] = text[i].Trim();
|
|
|
|
for (int i = 0; i < text.Length; i++)
|
|
{
|
|
if (text[i].StartsWith(IpKeyName) == true)
|
|
{
|
|
stringArray = text[i].Split('=');
|
|
ret = stringArray[stringArray.Length - 1];
|
|
|
|
break;
|
|
}
|
|
}
|
|
sr.Close();
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ini 파일 쓰기
|
|
/// </summary>
|
|
/// <param name="IpAppName">값을 입력할 키가 속해있는 [섹션] 문자열</param>
|
|
/// <param name="IpKeyName">값을 입력할 키</param>
|
|
/// <param name="IpValue">쓸 키 값</param>
|
|
/// <param name="filePath">쓸 ini 파일 경로</param>
|
|
/// <returns>성공 : true, 실패 : false</returns>
|
|
public static Boolean SetIni(string IpAppName, string IpKeyName, string IpValue, string filePath)
|
|
{
|
|
try
|
|
{
|
|
string iniFile = filePath;
|
|
string readString = "";
|
|
|
|
using (StreamReader sr = new StreamReader(filePath, Encoding.Default))
|
|
{
|
|
readString = sr.ReadToEnd();
|
|
sr.BaseStream.Position = 0;
|
|
|
|
// Key값이 포함된 Line을 읽을 경우
|
|
if (readString.Contains(IpKeyName) == true)
|
|
{
|
|
int length;
|
|
string[] text = readString.Split('\n');
|
|
for (int i = 0; i < text.Length; i++)
|
|
text[i] = text[i].Trim();
|
|
|
|
for (int i = 0; i < text.Length; i++)
|
|
{
|
|
if (text[i].StartsWith(IpKeyName) == true)
|
|
{
|
|
length = text[i].Length;
|
|
|
|
int offset = readString.IndexOf(IpKeyName, 0);
|
|
readString = readString.Remove(offset, length);
|
|
readString = readString.Insert(offset, IpKeyName + "=" + IpValue);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
sr.Close();
|
|
|
|
File.Delete(filePath);
|
|
|
|
StreamWriter sw = new StreamWriter(filePath, true, Encoding.Default);
|
|
|
|
sw.Write(readString);
|
|
sw.Close();
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ini 파일 생성
|
|
/// </summary>
|
|
/// <param name="programName">Program명(ex. ITC81DB)</param>
|
|
/// <param name="version">Version(ex. 8.0.0)</param>
|
|
/// <param name="releaseDate">릴리즈 날짜(ex. 2022.03.04)</param>
|
|
/// <returns>성공 : true, 실패 : false</returns>
|
|
public static Boolean CreateVersionIni(string programName, string version, string releaseDate)
|
|
{
|
|
try
|
|
{
|
|
string strCheckFolder = "";
|
|
|
|
strCheckFolder = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\";
|
|
strCheckFolder += "Version.ini";
|
|
if (File.Exists(strCheckFolder) == false)
|
|
{
|
|
using (StreamWriter sw = new StreamWriter(strCheckFolder, true, Encoding.Default))
|
|
{
|
|
sw.Write("[PROGRAMINFO]" + "\r\n");
|
|
sw.Write("NAME=" + programName + "\r\n");
|
|
sw.Write("VERSION=" + version + "\r\n");
|
|
sw.Write("RELEASE=" + releaseDate + "\r\n");
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|