Параметри INI (.ini)

Де-факто Стандарт

Windows Initialization Configuration (INI): це класичний зручний для читання формат файлів конфігурації, популяризований Microsoft Windows. Він упорядковує параметри застосунків в іменованих розділах ([sections]) із парами ключ=значення.

Конвертувати з INI у JSON

Безкоштовний конвертер з INI у JSON у браузері. Миттєво конвертуйте файли на своєму пристрої.

Аналіз та метадані

Операційні системи та аналізатори файлів ідентифікують файли INI, перевіряючи початкову послідовність бінарних байтів:

Виберіть або перетягніть файли сюди

Приватно - файли ніколи не залишають ваш пристрій

або вставте Ctrl+V
Гарантія конфіденційності без передавання даних мережею: Жодного байта не передано на зовнішні сервери. Уся обробка відбувалася локально в ізольованому середовищі браузера.

Сигнатура заголовка на байтовому рівні (Magic Bytes)

Операційні системи та аналізатори файлів ідентифікують файли INI, перевіряючи початкову послідовність бінарних байтів:

ШІСТНАДЦЯТКОВА СИГНАТУРА (ЗСУВ 0):

5B ... 5D

ПОДАННЯ В ASCII: [...]

Стандартизація: Де-факто галузевий стандарт конфігурації

Технічні характеристики

Архітектура контейнераЗвичайний текстовий файл конфігурації, структурований у заголовки [section], що містять пари ключ = значення та коментарі (; або #)
СтисненняНестиснений текстовий файл
Порядок байтів (Endianness)Текстовий потік UTF-8 або ANSI
Колірні просториН/Д (Файл конфігурації)
Канали та структураВластивості конфігурації у форматі «ключ: значення», згруповані за просторами імен розділів
Максимальні розміриІсторичне обмеження у 64 КБ у 16-бітній Windows; відсутнє в сучасних реалізаціях
ПрозорістьВідсутня
Потокове та прогресивне завантаженняПослідовний построковий потоковий парсер

Технічна матриця порівняння: INI проти конкурентів

Технічний атрибутINI (Поточний)JSONYAMLTOML
Складність синтаксисуНайпростіший можливий (розділ + ключ=значення)Суворі дужки та лапкиЧутливі до відступів пробілиСучасні типізовані таблиці
Підтримка коментарівВбудована підтримка коментарів (; та #)Коментарі не підтримуються в специфікаціїВбудована підтримка коментарів (#)Вбудована підтримка коментарів (#)
Вкладені структуриЛише 1-рівневі розділиНескінченно вкладені об'єкти/масивиНескінченно вкладені дереваСтруктуровані масиви таблиць
Типізація данихНеявні рядки (застосунок визначає типи)Явні числа, логічні значення, масивиЯвні типи та прив'язкиЯвні дати, числа, масиви

Типові режими пошкодження та посібник з відновлення в шістнадцятковому форматі

Застосунок ігнорує налаштування або не запускається.

Першопричина: Відсутня дужка заголовка розділу (наприклад, '[Settings' замість '[Settings]') або неекранований знак рівності у значенні.

Відновлення: Перевірте та виправте синтаксис INI за допомогою форматувальника конфігурацій File2File.app.

Аналіз безпеки та векторів атак на парсери

Засоби розбору INI мають захищати від атак із впровадженням розділів та забруднення прототипів під час десеріалізації в об’єкти.

Відомі вектори атак

  • Впровадження INI, де вставка нового рядка у введених користувачем даних створює несанкціоновані розділи конфігурації.
  • Забруднення прототипу (prototype pollution) у засобах розбору INI для JavaScript під час присвоєння значення властивості '__proto__'.
  • Відмова в обслуговуванні за допомогою глибоко рекурсивного розширення назв розділів.

Рекомендації щодо захисту: Очищуйте введені користувачами дані, щоб заборонити символи нового рядка й захиститися від забруднення прототипу (prototype pollution).

Історичне походження та віхи

2000Стандартна бібліотека Python містить configparser для роботи з файлами INI.
1995Windows 95 представляє системний реєстр Windows на заміну монолітним системним файлам INI (SYSTEM.INI, WIN.INI).
1985Microsoft Windows 1.0 представляє WIN.INI як основну базу даних конфігурації операційної системи.

Основні переваги

  • Винятково чистий, інтуїтивно зрозумілий синтаксис: нетехнічні користувачі можуть легко читати та змінювати налаштування.
  • Вбудовані API для розбору є майже в кожній мові програмування (configparser у Python, parse_ini_file у PHP, C#).
  • Простори імен розділів запобігають колізіям налаштувань у різних функціях додатків.

Технічні обмеження та недоліки

  • Відсутній офіційний міжнародний стандарт: символи коментарів (; проти #) та правила екранування відрізняються в різних парсерах.
  • Плоска ієрархія: не підтримує глибоко вкладені масиви або складні структуровані об'єкти без спеціальних роздільників.
  • Усі значення зчитуються як рядки, тому застосункам потрібно самостійно розбирати цілі числа, логічні значення та числа з рухомою комою.

Цікаві технічні факти

  • У Windows 3.1 кожне окреме налаштування всієї операційної системи зберігалося лише у двох файлах: WIN.INI та SYSTEM.INI.
  • Git використовує формат INI для свого основного файлу конфігурації репозиторію, розташованого за адресою '.git/config'.
  • Файли ярликів робочого столу на Linux (файли '.desktop' XDG Desktop Entry) структуровані за допомогою стандартного синтаксису INI.

Поширені технічні запитання

Для чого використовується файл INI?

Файли INI використовуються настільним програмним забезпеченням, іграми та інструментами розробників (як-от конфігурація Git та PHP.ini) для зберігання вподобань користувача та налаштувань конфігурації у зручному для читання форматі.

Як я можу редагувати файл INI?

Ви можете відкривати та редагувати файли INI за допомогою будь-якого базового текстового редактора, такого як Notepad, TextEdit, VS Code або прямо онлайн за допомогою File2File.app.

Чи можу я конвертувати INI у JSON або YAML?

Так. File2File.app може миттєво конвертувати файли INI у формати JSON, YAML або TOML прямо у вашому браузері.