Как расшифровать ini файл

Обновлено: 07.07.2024

Файл INI - это файл конфигурации для компьютерного программного обеспечения, который состоит из текстового содержимого со структурой и синтаксисом, включающими пары ключ-значение для свойств и разделов, которые организуют свойства. Имя этих файлов конфигурации происходит от расширения имени файла INI для инициализации , используемого в операционной системе MS-DOS, которая сделала этот метод конфигурации программного обеспечения популяризированным. Формат стал неформальным стандартом во многих контекстах конфигурации, но многие приложения в других операционных системах используют другие расширения имен файлов, такие как conf и cfg .

СОДЕРЖАНИЕ

История

Основным механизмом конфигурации программного обеспечения в Windows изначально был формат текстового файла, который состоял из текстовых строк с одной парой ключ-значение в каждой строке, организованных в разделы. Этот формат использовался для компонентов операционной системы, таких как драйверы устройств, шрифты, средства запуска. Файлы INI также обычно использовались приложениями для хранения индивидуальных настроек.

В системах Linux и Unix также используется аналогичный формат файла для конфигурации системы. Кроме того, программное обеспечение, не зависящее от платформы, может использовать этот формат файла для конфигурации. Он удобочитаемый и простой для синтаксического анализа, поэтому это удобный формат для файлов конфигурации, которые не требуют гораздо большей сложности.

Файлы конфигурации Git похожи на файлы INI.

PHP использует формат INI для своего " php.ini " файла конфигурации как в Windows, так и в Linux.

Файлы Desktop.ini определяют отображение каталогов в Windows, например, значки для каталога.

Формат

Ключи (свойства)

Базовым элементом INI-файла является ключ или свойство . Каждый ключ имеет имя и значение, разделители с помощью знака равенства (=). Имя отображается слева от знака равенства. В реализации Windows знак равенства и точка с запятой являются зарезервированными символами и не могут появляться в ключе. Значение может содержать любой символ.

Разделы

Ключи могут, но не обязательно, быть сгруппированы в разделы с произвольными названиями . Название раздела появляется в отдельной строке в квадратных скобках ( [ и ] ). Все ключи после объявления раздела связаны с этим разделом. Нет явного разделителя «конец раздела»; разделы заканчиваются в объявлении следующего раздела или в конце файла. Разделы не могут быть вложенными.

Чувствительность к регистру

Имена разделов и свойств не чувствительны к регистру в реализации Windows, но другие приложения могут вести себя иначе.

Комментарии

Точка с запятой ( ; ) в начале строки обозначает комментарий . Строки комментариев игнорируются.

Различные особенности

Формат файла INI не всегда строго определен. Многие компьютерные программы поддерживают функции, выходящие за рамки уже описанных основных функций. Ниже приводится список некоторых общих функций, которые могут быть реализованы или не реализованы в какой-либо конкретной программе.

Комментарии

В более общем плане использование знака числа непредсказуемо, как в следующих строках (обратите внимание на пробел после знака числа во второй строке). По этой причине не следует использовать знак числа в начале комментария.

В некоторых реализациях комментарий может начинаться где угодно в строке, в том числе в той же строке после объявлений свойств или разделов. В других случаях, включая функцию WinAPI GetPrivateProfileString , комментарии должны размещаться в отдельных строках.

Повторяющиеся имена

Большинство реализаций поддерживают только одно свойство с заданным именем в разделе. Второе вхождение имени свойства может вызвать прерывание , оно может быть проигнорировано (и значение отброшено) или оно может переопределить первое вхождение (с отбрасыванием первого значения). Некоторые программы используют повторяющиеся имена свойств для реализации многозначных свойств.

Интерпретация нескольких объявлений разделов с одним и тем же именем также может быть разной. В некоторых реализациях повторяющиеся разделы просто объединяют свои свойства, как если бы они располагались непрерывно. Другие могут прервать или игнорировать некоторые аспекты INI-файла.

Побег персонажей

Некоторые реализации также предлагают различную поддержку для экранирующего символа , как правило , с обратной косой черты ( \ ) после синтаксиса C . Некоторые поддерживают «продолжение строки», когда обратная косая черта, за которой сразу следует EOL (конец строки), приводит к игнорированию разрыва строки и продолжению «логической строки» на следующей фактической строке из INI-файла. Также наблюдается реализация различных «специальных символов» с escape-последовательностями.

Глобальные свойства

Также могут быть разрешены необязательные «глобальные» свойства, которые объявляются до объявления любого раздела.

Иерархия

Чаще всего в файлах INI отсутствует иерархия разделов внутри разделов. Однако некоторые файлы имеют иерархическое соглашение об именах. Для раздела A, подраздела B, подраздела C, свойства P и значения V они могут принимать такие записи, как [A.B.C] and P=V (Windows ' xstart.ini ), [A\B\C] and P=V (файл драйвера IBM Windows devlist.ini ) или [A] and B,C,P = V (файл Microsoft Visual Studio AEMANAGR.INI ).

Неясно, являются ли это просто соглашениями об именах, которые приложение использует для создания видимости иерархии, или же файл читается модулем, который фактически представляет эту иерархию программисту приложения.

Разделитель имени / значения

Некоторые реализации позволяют использовать двоеточие ( : ) в качестве разделителя имени / значения (вместо знака равенства). Пробелы иногда используются в мире Linux.

Котировки стоимости

Некоторые реализации позволяют заключать значения в кавычки, обычно с использованием двойных кавычек и / или апострофов . Это позволяет явно объявлять пробелы и / или заключать в кавычки специальные символы (равно, точка с запятой и т. Д.). Стандартная функция Windows GetPrivateProfileString поддерживает это и удаляет кавычки, окружающие значения.

Пробел

Интерпретация пробелов варьируется. Большинство реализаций игнорируют начальные и конечные пробелы вокруг имени свойства. Некоторые даже игнорируют пробелы в значениях (например, делая эквивалентными «имя хоста» и «имя хоста»). Некоторые реализации также игнорируют начальные и конечные пробелы вокруг значения свойства; другие считают, что все символы, следующие за знаком равенства (включая пробелы), являются частью значения.

Порядок разделов и свойств

В большинстве случаев порядок свойств в разделе и порядок разделов в файле не имеют значения, но реализации могут отличаться.

Пример

В следующем примере файла есть два раздела: один для владельца программного обеспечения, а второй - для подключения к базе данных заработной платы. В комментариях указывается последнее лицо, изменившее файл, и причина изменения.

Доступ к файлам INI

В Windows Profile API - это программный интерфейс, используемый для чтения и записи настроек из классических файлов Windows .ini. Например, функция GetPrivateProfileString извлекает строку из указанного раздела в файле инициализации. («Частный» профиль контрастирует с тем GetProfileString , который берется из WIN.INI .)

Следующий пример программы на C демонстрирует чтение значений свойств из приведенного выше примера файла INI (пусть будет имя файла конфигурации dbsettings.ini ):

Третий параметр функции GetPrivateProfileString - это значение по умолчанию, которое в двух приведенных выше вызовах функции равно «127.0.0.1» и 143 соответственно. Если аргумент, предоставленный для этого параметра, - ПУСТО (NULL), по умолчанию используется пустая строка "".

В Unix существует множество различных библиотек конфигурации для доступа к файлам INI. Часто они уже включены в рамки и наборы инструментов. Примеры синтаксических анализаторов INI для Unix включают GLib , iniparser и libconfini .

Сравнение парсеров INI

11.0.12 (20 июля 2021 г . ; 2 месяца назад ) [±] 8u301 (20 июля 2021 г . ; 2 месяца назад ) [±] ( 2021-07-20 )
( 2021-07-20 )

Сопоставление файлов

Сопоставление файла инициализации создает сопоставление между файлом INI и реестром . Он был представлен в Windows NT и Windows 95 как способ перехода от хранения настроек в классических файлах .ini в новый реестр Windows . Сопоставление файлов перехватывает вызовы Profile API и, используя настройки из IniFileMapping раздела реестра, направляет чтение и запись в соответствующие места в реестре.

Используя приведенный ниже пример, можно выполнить строковый вызов, чтобы получить ключ имени из раздела владельца из файла настроек, например, dbsettings.ini . Возвращаемое значение должно быть строкой «Джон Доу»:

Отображение INI принимает этот вызов API профиля, игнорирует любой путь в данном имени файла и проверяет, есть ли в каталоге ключ реестра, соответствующий имени файла:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
CurrentVersion\IniFileMapping

Если он существует, он ищет имя записи, соответствующее запрошенному разделу. Если запись найдена, отображение INI использует ее значение как указатель на другую часть реестра. Затем он ищет запрошенную настройку INI в этой части реестра.

Если совпадающее имя записи не найдено, а под этим (Default) именем есть запись, вместо нее используется сопоставление INI. Таким образом, каждое имя раздела не требует отдельной записи.

HKEY_LOCAL_MACHINE \ Программное обеспечение \ . \ IniFileMapping \ dbsettings.ini
(Default) @USR: Программное обеспечение \ oldprogs \ inisettings \ all
database USR: Программное обеспечение \ oldprogs \ inisettings \ db

Итак, в этом случае вызов профиля для раздела [владелец] отображается на:

HKEY_CURRENT_USER \ Программное обеспечение \ oldprogs \ inisettings \ все
name Джон Доу
organization Продукты Acme

где " name " имя записи реестра соответствует запрошенному ключу INI. Затем значение «John Doe» возвращается вызову Profile. В этом случае префикс @ по умолчанию предотвращает чтение файла dbsettings.ini на диске. В результате любые настройки, не найденные в реестре, не ищутся в INI-файле.

" database " Запись реестра не имеет префикса @ в значении; Таким образом, для [базы] раздел только настройки в реестре берутся первой следуют настройки в dbsettings.ini файл на диске.

Альтернативы

Начиная с Windows 95 , Microsoft начала активно продвигать использование реестра Windows вместо INI-файла. Файлы INI обычно ограничены двумя уровнями (разделы и свойства) и плохо обрабатывают двоичные данные. Однако это решение не было защищено от критики из-за того, что реестр является монолитным, непрозрачным и двоичным, должен быть синхронизирован с файловой системой и представляет собой единую точку отказа для операционной системы.

Позднее файлы конфигурации на основе XML стали популярным выбором для кодирования конфигурации в текстовых файлах. XML допускает произвольно сложные уровни и вложения и имеет стандартные механизмы для кодирования двоичных данных .

В последнее время форматы сериализации данных, такие как JSON , TOML и YAML, могут служить форматами конфигурации. Эти три альтернативных формата могут быть вложены произвольно, но имеют другой синтаксис, чем файл INI. Среди них TOML больше всего напоминает INI, но идея сделать TOML сознательно совместимым с большим подмножеством INI была отвергнута.

Однако новейшие синтаксические анализаторы INI допускают один и тот же произвольный уровень вложения XML , JSON , TOML и YAML , предлагают эквивалентную поддержку типизированных значений и Unicode , хотя сохраняют «неформальный статус» файлов INI, позволяя использовать несколько синтаксисов для выражения одного и того же. .


Настройка установленных программных продуктов – довольно утомительная процедура. А если учесть то, что в большинстве организаций идентичные настройки должны быть установлены не на одной машине, а по меньшей мере у нескольких сотрудников одного отдела, то если вы настраиваете приложения средствами графического интерфейса, весь этот процесс может затянуться надолго. Учитывая этот момент, можно сразу прийти к такому выводу, что желательно было бы попробовать автоматизировать процесс настройки программ, чтобы можно было централизованно управлять конфигурациями приложений ваших пользователей.
По большому счету, можно выделить несколько методов, позволяющих настраивать программные продукты, не прибегая к использованию пользовательского интерфейса. К таким методам можно отнести формирование сценариев для автоматизации определенных задач средствами какого-то скриптового языка, например Windows PowerShell или AutoIT, и последующее распространение таких сценариев средствами групповой политики. Помимо этого, если программные продукты генерируют определенные параметры в системном реестре операционных систем, вы можете централизованно предопределять такие настройки при помощи соответствующего элемента предпочтения групповой политики. В конце концов, некоторые программы могут для хранения своих настроек использовать конфигурационные файлы, изменяя которые вы можете вносить некоторые изменения в настройке таких продуктов.
Сегодня мы с вами остановимся именно на последнем описанном выше методе. Другими словами, из материала данной статьи вы узнаете о том, что собой представляют INI-файлы, каким образом они могут повлиять на настройку программ, а также, естественно, я расскажу о централизованной настройке INI-файлов. Но обо всем по порядку.

Что такое INI-файлы?



INI, они же Initialization-файлы, предназначены для хранения конфигурационных данных некоторых компонентов операционных систем Windows, а также приложений сторонних разработчиков. Были созданы такие файлы еще в первых версиях операционных систем Windows, но через какое-то время, а если говорить точнее, то в 1995 году, с появлением Windows 95 их потихоньку начал вытеснять системный реестр, и сейчас они используются практически только в приложениях сторонних разработчиков, которые не спешат менять способы хранения конфигурационных данных.
По сути, официальной спецификации формата этого файла в интернете нет или же его попросту очень сложно найти. Но тут можно не сильно волноваться, так как структура INI-файлов настолько проста и интуитивно понятна, что вручную создавать и конфигурировать такие файлы могут даже штатные пользователи, которые не то чтобы не разбирались в языках программирования, но которые даже ни разу не разбирались с HTML.
Данные конфигурационные файлы состоят из так называемых разделов, внутри которых располагаются сами параметры, именуемые свойствами. Такие файлы могут содержать как пустые строки, которые удобно использовать для того, чтобы INI-файлы были удобочитаемыми, так и комментарии в виде точки с запятой и даже заголовки разделов, заключаемые в квадратные скобки. Более чем очевидно, что в таких конфигурационных файлах нельзя использовать несколько различных свойств с одинаковыми именами, но я полагаю, что уже давно никто не совершает таких банальных ошибок. Также следует отметить, что при помощи обратного слэша вы можете объединять несколько строк, и они будут обрабатываться как одна целая строка.
Вот, в принципе, больше рассказывать о конфигурационных INI-файлах особо-то и нечего, поэтому потихоньку перейдем к практической части данной статьи. Перед тем как мы с вами начнем настраивать такие файлы, будет правильно, если будут рассмотрены сами файлы. Также будет рассказано о том, как они изменяются после внесения изменений при помощи диалоговых окон настроек самого программного обеспечения. В качестве примера возьмем немалоизвестный браузер Opera.

Локализация изменений настроек программ средствами INI-файлов

Прежде всего, следует загрузить этот программный продукт и проинсталлировать его. Это я описывать не буду, так как процедура более чем очевидная. Теперь, перед тем как начнем что-то изменять, откроем папку, в которой находятся конфигурационные файлы данной программы. Думаю, те, кто используют этот браузер по умолчанию, знают, что файл operaprefs.ini находится в папке %Userprofile%\AppData\Roaming\Opera\Opera. И кстати, этот файл можно конфигурировать еще и при помощи специальной конфигурационной страницы, которую можно вызвать непосредственно из браузера – это страница opera:config. Как видно на следующей иллюстрации, здесь есть множество параметров, доступных для настройки. Перед внесением каких-либо изменений, предлагаю забэкапить этот файл в какую-то отдельную папку с резервными копиями.



Рис. 2. Измененный ini-файл
Заменим измененный файл тем файлом, резервная копия которого была создана, и перейдем к конфигурированию INI-файлов средствами функциональных возможностей предпочтений групповой политики.

Узел предпочтений групповой политики «INI-файлы»

  1. Первым делом, в оснастке «Управление групповой политикой» создаем объект групповой политики, который будет называться «Opera INI-files Preferences» и будет отвечать исключительно за настройки INI-файла этого браузера, сразу связываем сам объект со всем доменом (изменения, правда, будут вноситься только лишь в конфигурацию пользователя, но для простоты сейчас будет выполнено именно так), ну а после этого уже откроем редактор управления групповыми политиками.
  2. Следовательно, находясь в узле «Конфигурация Windows» (Windows Settings) конфигурации пользователя, выберем узел «INI-файлы» (INI files), а затем, как видно из следующей иллюстрации, из контекстного меню, как обычно, выберем команду «Создать», а затем «Файл .ini» («Ini file»):

  • В первом элементе предпочтения имя свойства должно быть Click to Minimize, а его значение должно быть 1;
  • Во втором элементе предпочтения имя свойства — Cookies Directory, а значение — Cookies.



Рис. 6. Редактор управления групповыми политиками после создания всех элементов предпочтений
А вот теперь можно и проверить, удалось ли нам изменить существующий INI-файл оперы. Для этого следует обновить параметры политики при помощи утилиты gpupdate, а затем нужно локализовать искомый конфигурационный файл. Как видно на последней иллюстрации данной статьи, файл изменен, и в нем определены те значения, которые были указаны в соответствующих элементах предпочтений групповой политики:



Рис. 7. Измененный файл operaprefs.ini

Заключение


Из этой статьи вы узнали о том, что собой представляют и для чего нужны конфигурационные INI-файлы. На примере с браузером Opera было рассмотрено изменение настроек посредством одного из таких файлов. Ну а самое важное, о чем шла речь в текущей статье, так это то, что вы узнали о таком интересном элементе предпочтений групповой политики, как «INI-файлы». В сопутствующем примере было рассмотрено изменение трех свойств существующего конфигурационного файла.
Самое главное при работе с конфигурационными INI-файлами ­– это то, чтобы вы всегда сохраняли исходную версию таких файлов перед редактированием последних на тот случай, если перестараетесь с изменениями конфигурации. Откат ведь всегда проще и безболезненнее, нежели полная переустановка программного обеспечения :)

Снимок экрана файла INI в программе CCleaner

Файл с INI расширением файла является инициализация файла для Windows , или MS-DOS. Эти файлы представляют собой обычные текстовые файлы, которые содержат параметры, определяющие, как должно работать что-то другое — обычно программа.

Различные программы используют свои собственные файлы INI, но все они служат одной и той же цели. Например, CCleaner использует INI-файл для хранения различных опций . Этот конкретный INI-файл хранится под именем ccleaner.ini в папке установки CCleaner, обычно в C: \ Program Files \ CCleaner \.

Общий файл INI в Windows , называется desktop.ini это скрытый файл , который хранит информацию о том , как должны отображаться папки и файлы.

Как открыть и редактировать файлы INI

Снимок экрана файла INI в программе CCleaner

Люди обычно не открывают и не редактируют файлы INI, но их можно открывать и изменять в любом текстовом редакторе. Если дважды щелкнуть INI-файл, он автоматически откроется в приложении «Блокнот» в Windows.

Посмотрите наш список лучших бесплатных текстовых редакторов для некоторых альтернативных текстовых редакторов, которые также редактируют файлы INI.

Как структурируется INI-файл

INI-файлы содержат ключи (также называемые свойствами ), а некоторые используют дополнительные разделы для группировки ключей. Ключ должен иметь имя и значение, разделенные знаком равенства, например:

INI-файлы работают по-разному в разных программах. Некоторые INI-файлы действительно крошечные (несколько килобайт) с одной или двумя строками информации, а другие могут быть очень длинными (несколько мегабайт) с множеством настраиваемых параметров.

В этом примере CCleaner определяет английский язык со значением 1033 . Таким образом, когда открывается CCleaner, он читает INI-файл, чтобы определить, на каком языке отображать текст программы. Хотя он использует 1033 для обозначения английского языка, программа изначально поддерживает и другие языки, что означает, что вы можете изменить его на 1034, чтобы использовать вместо него испанский.

То же самое можно сказать и о всех других языках, которые поддерживает программное обеспечение, но вы должны просмотреть его документацию, чтобы понять, какие цифры означают другие языки.

Если этот ключ существует в разделе, он может выглядеть так:

Этот конкретный пример находится в INI-файле, который использует CCleaner. Вы можете изменить этот INI-файл самостоятельно, чтобы добавить дополнительные параметры в программу, поскольку он ссылается на этот INI-файл, чтобы определить, что должно быть удалено с компьютера. Эта конкретная программа достаточно популярна, так что вы можете загрузить инструмент под названием CCEnhancer, который обновляет INI-файл с множеством различных параметров, которые по умолчанию не встроены.

Дополнительная информация о файлах INI

Некоторые файлы INI могут содержать точку с запятой в тексте. Они просто указывают на комментарий, чтобы описать что-то пользователю, если он просматривает INI-файл. Ничто после комментария не интерпретируется программой, которая его использует.

Имена и разделы ключей не чувствительны к регистру , по крайней мере, в Windows. Тот же эффект создается в файле INI, в котором заглавные буквы используются как строчные.

Общий файл с именем boot.ini в Windows XP подробно описывает конкретное место установки Windows XP. Если проблемы возникают с этим файлом, см. Как восстановить или заменить Boot.ini в Windows XP .

Удалить файлы desktop.ini безопасно , но Windows воссоздает файл и применяет к нему значения по умолчанию. Итак, если вы применили пользовательский значок, например, к папке, а затем удалили файл desktop.ini , папка вернется к значку по умолчанию.

INI-файлы широко использовались в ранних версиях Windows, прежде чем Microsoft начала поощрять реестр Windows к хранению настроек приложения. Теперь, хотя многие программы все еще используют формат INI, XML служит той же цели.

Некоторые другие файлы инициализации, которые вы можете встретить, которые не используют расширение файла INI, являются файлами CFG и CONF. Некоторые программы даже придерживаются TXT.

Файл INI - это файл конфигурации для компьютерного программного обеспечения, который состоит из текстового содержимого со структурой и синтаксисом, включающими пары ключ-значение для свойств и разделов, которые организуют свойства. Имя этих файлов конфигурации происходит от расширения имени файла INI для инициализации , используемого в операционной системе MS-DOS, которая сделала этот метод конфигурации программного обеспечения популяризированным. Формат стал неформальным стандартом во многих контекстах конфигурации, но многие приложения в других операционных системах используют другие расширения имен файлов, такие как conf и cfg .

СОДЕРЖАНИЕ

История

Основным механизмом конфигурации программного обеспечения в Windows изначально был формат текстового файла, который состоял из текстовых строк с одной парой ключ-значение в каждой строке, организованных в разделы. Этот формат использовался для компонентов операционной системы, таких как драйверы устройств, шрифты, средства запуска. Файлы INI также обычно использовались приложениями для хранения индивидуальных настроек.

В системах Linux и Unix также используется аналогичный формат файла для конфигурации системы. Кроме того, программное обеспечение, не зависящее от платформы, может использовать этот формат файла для конфигурации. Он удобочитаемый и простой для синтаксического анализа, поэтому это удобный формат для файлов конфигурации, которые не требуют гораздо большей сложности.

Файлы конфигурации Git похожи на файлы INI.

PHP использует формат INI для своего " php.ini " файла конфигурации как в Windows, так и в Linux.

Файлы Desktop.ini определяют отображение каталогов в Windows, например, значки для каталога.

Формат

Ключи (свойства)

Базовым элементом INI-файла является ключ или свойство . Каждый ключ имеет имя и значение, разделители с помощью знака равенства (=). Имя отображается слева от знака равенства. В реализации Windows знак равенства и точка с запятой являются зарезервированными символами и не могут появляться в ключе. Значение может содержать любой символ.

Разделы

Ключи могут, но не обязательно, быть сгруппированы в разделы с произвольными названиями . Название раздела появляется в отдельной строке в квадратных скобках ( [ и ] ). Все ключи после объявления раздела связаны с этим разделом. Нет явного разделителя «конец раздела»; разделы заканчиваются в объявлении следующего раздела или в конце файла. Разделы не могут быть вложенными.

Чувствительность к регистру

Имена разделов и свойств не чувствительны к регистру в реализации Windows, но другие приложения могут вести себя иначе.

Комментарии

Точка с запятой ( ; ) в начале строки обозначает комментарий . Строки комментариев игнорируются.

Различные особенности

Формат файла INI не всегда строго определен. Многие компьютерные программы поддерживают функции, выходящие за рамки уже описанных основных функций. Ниже приводится список некоторых общих функций, которые могут быть реализованы или не реализованы в какой-либо конкретной программе.

Комментарии

В более общем плане использование знака числа непредсказуемо, как в следующих строках (обратите внимание на пробел после знака числа во второй строке). По этой причине не следует использовать знак числа в начале комментария.

В некоторых реализациях комментарий может начинаться где угодно в строке, в том числе в той же строке после объявлений свойств или разделов. В других случаях, включая функцию WinAPI GetPrivateProfileString , комментарии должны размещаться в отдельных строках.

Повторяющиеся имена

Большинство реализаций поддерживают только одно свойство с заданным именем в разделе. Второе вхождение имени свойства может вызвать прерывание , оно может быть проигнорировано (и значение отброшено) или оно может переопределить первое вхождение (с отбрасыванием первого значения). Некоторые программы используют повторяющиеся имена свойств для реализации многозначных свойств.

Интерпретация нескольких объявлений разделов с одним и тем же именем также может быть разной. В некоторых реализациях повторяющиеся разделы просто объединяют свои свойства, как если бы они располагались непрерывно. Другие могут прервать или игнорировать некоторые аспекты INI-файла.

Побег персонажей

Некоторые реализации также предлагают различную поддержку для экранирующего символа , как правило , с обратной косой черты ( \ ) после синтаксиса C . Некоторые поддерживают «продолжение строки», когда обратная косая черта, за которой сразу следует EOL (конец строки), приводит к игнорированию разрыва строки и продолжению «логической строки» на следующей фактической строке из INI-файла. Также наблюдается реализация различных «специальных символов» с escape-последовательностями.

Глобальные свойства

Также могут быть разрешены необязательные «глобальные» свойства, которые объявляются до объявления любого раздела.

Иерархия

Чаще всего в файлах INI отсутствует иерархия разделов внутри разделов. Однако некоторые файлы имеют иерархическое соглашение об именах. Для раздела A, подраздела B, подраздела C, свойства P и значения V они могут принимать такие записи, как [A.B.C] and P=V (Windows ' xstart.ini ), [A\B\C] and P=V (файл драйвера IBM Windows devlist.ini ) или [A] and B,C,P = V (файл Microsoft Visual Studio AEMANAGR.INI ).

Неясно, являются ли это просто соглашениями об именах, которые приложение использует для создания видимости иерархии, или же файл читается модулем, который фактически представляет эту иерархию программисту приложения.

Разделитель имени / значения

Некоторые реализации позволяют использовать двоеточие ( : ) в качестве разделителя имени / значения (вместо знака равенства). Пробелы иногда используются в мире Linux.

Котировки стоимости

Некоторые реализации позволяют заключать значения в кавычки, обычно с использованием двойных кавычек и / или апострофов . Это позволяет явно объявлять пробелы и / или заключать в кавычки специальные символы (равно, точка с запятой и т. Д.). Стандартная функция Windows GetPrivateProfileString поддерживает это и удаляет кавычки, окружающие значения.

Пробел

Интерпретация пробелов варьируется. Большинство реализаций игнорируют начальные и конечные пробелы вокруг имени свойства. Некоторые даже игнорируют пробелы в значениях (например, делая эквивалентными «имя хоста» и «имя хоста»). Некоторые реализации также игнорируют начальные и конечные пробелы вокруг значения свойства; другие считают, что все символы, следующие за знаком равенства (включая пробелы), являются частью значения.

Порядок разделов и свойств

В большинстве случаев порядок свойств в разделе и порядок разделов в файле не имеют значения, но реализации могут отличаться.

Пример

В следующем примере файла есть два раздела: один для владельца программного обеспечения, а второй - для подключения к базе данных заработной платы. В комментариях указывается последнее лицо, изменившее файл, и причина изменения.

Доступ к файлам INI

В Windows Profile API - это программный интерфейс, используемый для чтения и записи настроек из классических файлов Windows .ini. Например, функция GetPrivateProfileString извлекает строку из указанного раздела в файле инициализации. («Частный» профиль контрастирует с тем GetProfileString , который берется из WIN.INI .)

Следующий пример программы на C демонстрирует чтение значений свойств из приведенного выше примера файла INI (пусть будет имя файла конфигурации dbsettings.ini ):

Третий параметр функции GetPrivateProfileString - это значение по умолчанию, которое в двух приведенных выше вызовах функции равно «127.0.0.1» и 143 соответственно. Если аргумент, предоставленный для этого параметра, - ПУСТО (NULL), по умолчанию используется пустая строка "".

В Unix существует множество различных библиотек конфигурации для доступа к файлам INI. Часто они уже включены в рамки и наборы инструментов. Примеры синтаксических анализаторов INI для Unix включают GLib , iniparser и libconfini .

Сравнение парсеров INI

11.0.12 (20 июля 2021 г . ; 2 месяца назад ) [±] 8u301 (20 июля 2021 г . ; 2 месяца назад ) [±] ( 2021-07-20 )
( 2021-07-20 )

Сопоставление файлов

Сопоставление файла инициализации создает сопоставление между файлом INI и реестром . Он был представлен в Windows NT и Windows 95 как способ перехода от хранения настроек в классических файлах .ini в новый реестр Windows . Сопоставление файлов перехватывает вызовы Profile API и, используя настройки из IniFileMapping раздела реестра, направляет чтение и запись в соответствующие места в реестре.

Используя приведенный ниже пример, можно выполнить строковый вызов, чтобы получить ключ имени из раздела владельца из файла настроек, например, dbsettings.ini . Возвращаемое значение должно быть строкой «Джон Доу»:

Отображение INI принимает этот вызов API профиля, игнорирует любой путь в данном имени файла и проверяет, есть ли в каталоге ключ реестра, соответствующий имени файла:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\
CurrentVersion\IniFileMapping

Если он существует, он ищет имя записи, соответствующее запрошенному разделу. Если запись найдена, отображение INI использует ее значение как указатель на другую часть реестра. Затем он ищет запрошенную настройку INI в этой части реестра.

Если совпадающее имя записи не найдено, а под этим (Default) именем есть запись, вместо нее используется сопоставление INI. Таким образом, каждое имя раздела не требует отдельной записи.

HKEY_LOCAL_MACHINE \ Программное обеспечение \ . \ IniFileMapping \ dbsettings.ini
(Default) @USR: Программное обеспечение \ oldprogs \ inisettings \ all
database USR: Программное обеспечение \ oldprogs \ inisettings \ db

Итак, в этом случае вызов профиля для раздела [владелец] отображается на:

HKEY_CURRENT_USER \ Программное обеспечение \ oldprogs \ inisettings \ все
name Джон Доу
organization Продукты Acme

где " name " имя записи реестра соответствует запрошенному ключу INI. Затем значение «John Doe» возвращается вызову Profile. В этом случае префикс @ по умолчанию предотвращает чтение файла dbsettings.ini на диске. В результате любые настройки, не найденные в реестре, не ищутся в INI-файле.

" database " Запись реестра не имеет префикса @ в значении; Таким образом, для [базы] раздел только настройки в реестре берутся первой следуют настройки в dbsettings.ini файл на диске.

Альтернативы

Начиная с Windows 95 , Microsoft начала активно продвигать использование реестра Windows вместо INI-файла. Файлы INI обычно ограничены двумя уровнями (разделы и свойства) и плохо обрабатывают двоичные данные. Однако это решение не было защищено от критики из-за того, что реестр является монолитным, непрозрачным и двоичным, должен быть синхронизирован с файловой системой и представляет собой единую точку отказа для операционной системы.

Позднее файлы конфигурации на основе XML стали популярным выбором для кодирования конфигурации в текстовых файлах. XML допускает произвольно сложные уровни и вложения и имеет стандартные механизмы для кодирования двоичных данных .

В последнее время форматы сериализации данных, такие как JSON , TOML и YAML, могут служить форматами конфигурации. Эти три альтернативных формата могут быть вложены произвольно, но имеют другой синтаксис, чем файл INI. Среди них TOML больше всего напоминает INI, но идея сделать TOML сознательно совместимым с большим подмножеством INI была отвергнута.

Однако новейшие синтаксические анализаторы INI допускают один и тот же произвольный уровень вложения XML , JSON , TOML и YAML , предлагают эквивалентную поддержку типизированных значений и Unicode , хотя сохраняют «неформальный статус» файлов INI, позволяя использовать несколько синтаксисов для выражения одного и того же. .

Читайте также: