Deseamos compartirte la mejor información que hallamos en línea. Esperamos que te sirva de ayuda y si quieres comentarnos algo que nos pueda ayudar a crecer hazlo con libertad.
Solución:
Prefacio
En primer lugar, lea esta publicación de blog de MSDN sobre las limitaciones de los archivos INI. Si se adapta a tus necesidades, sigue leyendo.
Esta es una implementación concisa que escribí, utilizando el Windows P/Invoke original, por lo que es compatible con todas las versiones de Windows con .NET instalado (es decir, Windows 98 – Windows 10). Por la presente, lo libero al dominio público: puede usarlo comercialmente sin atribución.
la clase diminuta
Agregar una nueva clase llamada IniFile.cs
a su proyecto:
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
// Change this to match your program's normal namespace
namespace MyProg
class IniFile // revision 11
string Path;
string EXE = Assembly.GetExecutingAssembly().GetName().Name;
[DllImport("kernel32", CharSet = CharSet.Unicode)]
static extern long WritePrivateProfileString(string Section, string Key, string Value, string FilePath);
[DllImport("kernel32", CharSet = CharSet.Unicode)]
static extern int GetPrivateProfileString(string Section, string Key, string Default, StringBuilder RetVal, int Size, string FilePath);
public IniFile(string IniPath = null)
Path = new FileInfo(IniPath ?? EXE + ".ini").FullName;
public string Read(string Key, string Section = null)
var RetVal = new StringBuilder(255);
GetPrivateProfileString(Section ?? EXE, Key, "", RetVal, 255, Path);
return RetVal.ToString();
public void Write(string Key, string Value, string Section = null)
WritePrivateProfileString(Section ?? EXE, Key, Value, Path);
public void DeleteKey(string Key, string Section = null)
Write(Key, null, Section ?? EXE);
public void DeleteSection(string Section = null)
Write(null, null, Section ?? EXE);
public bool KeyExists(string Key, string Section = null)
return Read(Key, Section).Length > 0;
Cómo usarlo
Abra el archivo INI de una de las 3 formas siguientes:
// Creates or loads an INI file in the same directory as your executable
// named EXE.ini (where EXE is the name of your executable)
var MyIni = new IniFile();
// Or specify a specific name in the current dir
var MyIni = new IniFile("Settings.ini");
// Or specify a specific name in a specific dir
var MyIni = new IniFile(@"C:Settings.ini");
Puedes escribir algunos valores así:
MyIni.Write("DefaultVolume", "100");
MyIni.Write("HomePage", "http://www.google.com");
Para crear un archivo como este:
[MyProg]
DefaultVolume=100
HomePage=http://www.google.com
Para leer los valores del archivo INI:
var DefaultVolume = MyIni.Read("DefaultVolume");
var HomePage = MyIni.Read("HomePage");
Opcionalmente, puede establecer [Section]
‘s:
MyIni.Write("DefaultVolume", "100", "Audio");
MyIni.Write("HomePage", "http://www.google.com", "Web");
Para crear un archivo como este:
[Audio]
DefaultVolume=100
[Web]
HomePage=http://www.google.com
También puede comprobar la existencia de un key al igual que:
if(!MyIni.KeyExists("DefaultVolume", "Audio"))
MyIni.Write("DefaultVolume", "100", "Audio");
Puede eliminar un key al igual que:
MyIni.DeleteKey("DefaultVolume", "Audio");
También puede eliminar una sección completa (incluidos todos keys) al igual que:
MyIni.DeleteSection("Web");
Por favor, siéntase libre de comentar con cualquier mejora!
Los creadores del marco .NET quieren que use archivos de configuración basados en XML, en lugar de archivos INI. Entonces no, no hay un mecanismo incorporado para leerlos.
Sin embargo, hay soluciones de terceros disponibles.
- Los controladores INI se pueden obtener como paquetes NuGet, como INI Parser.
- Puede escribir su propio controlador INI, que es la forma laboriosa de la vieja escuela. Le da más control sobre la implementación, que puede usar para bien o para mal. Ver, por ejemplo, una clase de manejo de archivos INI usando C#, P/Invoke y Win32.
Este artículo sobre CodeProject “Una clase de manejo de archivos INI usando C#” debería ayudar.
El autor creó una clase de C# “Ini” que expone dos funciones de KERNEL32.dll. Estas funciones son: WritePrivateProfileString
y GetPrivateProfileString
. Necesitará dos espacios de nombres: System.Runtime.InteropServices
y System.Text
.
Pasos para usar la clase Ini
En la definición de espacio de nombres de su proyecto, agregue
using INI;
Crear un INIFile como este
INIFile ini = new INIFile("C:\test.ini");
Utilizar IniWriteValue
para escribir un nuevo valor a un específico key en una sección o uso IniReadValue
para leer un valor DESDE un key en una Sección específica.
Nota: si estás empezando desde cero, puedes leer esto artículo de MSDN: Cómo: agregar archivos de configuración de aplicaciones a proyectos de C#. Es una mejor manera de configurar su aplicación.
Aquí tienes las comentarios y puntuaciones
Al final de todo puedes encontrar las observaciones de otros usuarios, tú igualmente puedes insertar el tuyo si te apetece.