Что такое файл инициализации
Практически любое программное обеспечение способно запоминать (сохранять) своё состояние. Например, внешний вид и размеры окон, язык, имя пользователя. Файлы инициализации — один из самых простых способов. Файлы с расширением «.ini» широко распространены не только в мире Windows, но и в других системах, например, php.ini.
Появились с самых первых версий Windows. В версии Windows 1.01 это был только файл WIN.INI. В Windows 3.0 добавился файл SYSTEM.INI. А затем их количество начало расти быстро и бесконтрольно.
Начиная с Windows 95, INI‐файлы считаются устаревшими и в качестве замены им корпорация Microsoft предлагает использовать системный реестр. Тем не менее INI‐файлы продолжают использоваться как приложениями других производителей, так и компонентами ОС от Microsoft. Например, файл boot.ini используется в Windows при загрузке.
Хотя INI‐файлы и приобрели популярность в Windows, они могут использоваться в любой ОС. Несложная структура этого формата позволяет легко обрабатывать их программно и имеет достаточно понятный вид для чтения и изменения людьми.
Содержание
Ссылки
Поскольку не существует подробной официальной спецификации формата, здесь приводятся ссылки на неофициальные спецификации:
Wikimedia Foundation . 2010 .
Формат файла
ini-файлы — это обычные текстовые файлы, которые можно редактировать и просматривать при помощи любого текстового редактора. ini-файлы имеют следующий формат:
INI файл может содержать:
- пустые строки;
- комментарии — от символа «;» (точка с запятой) до конца строки;
- заголовки разделов — строки, состоящие из названия раздела, заключённого в квадратные скобки «[ ]»;
- значения параметров — строки вида «имя_параметра = значение».
Получение всех секций и ключей
Чтобы получить список всех секций, нужно в функцию GetPrivateProfileString вместо имени секции передать NULL. Функция заполнит буфер списком из всех секций, разделённых символом с кодом 0. Аналогично для списка всех ключей в разделе.
Соглашения
Не существует общепринятого стандарта формата файлов INI. Хотя общая структура таких файлов обычно сохраняется, многие программные продукты вводят в неё дополнительные возможности или, наоборот, ограничения.
- Комментарии. Некоторые приложения (например,
- Обратный слэш. Иногда допускается использование обратного слэша «\» для объявления следующей строки продолжением этой. В таком случае они будут обработаны как одна целая строка. Иногда возможно также применять «\» для ввода спецсимволов, например, '\n' для обозначения переноса строки.
- Одинаковые параметры. В большинстве случаев наличие двух параметров с одинаковыми именами в одной секции запрещено.
- Одинаковые имена секций. Обычно при наличии нескольких секций с одинаковыми именами в файле обрабатывается лишь последняя из них. Некоторые приложения объединяют содержимое всех таких секций в одну.
Функции для работы с INI‐файлами
Существуют специальные функции, предназначенные для чтения и записи INI‐файлов, они лежат в библиотеке kernel32.dll:
- GetPrivateProfileString — считывает строковое значение параметра из раздела;
- GetPrivateProfileInt — считывает целочисленное значение параметра из раздела;
- WritePrivateProfileString — записывает значение параметра в раздел INI‐файла. Если раздела или параметра не существует, то он будет создан. Если указанного INI‐файла не существует, то он также будет создан.
Эти функции работают со строками и существуют в двух вариантах: в ANSI‐версии и в юникодной версии, однако запись и чтение INI‐файлов в юникоде будет работать только если файл уже был ранее создан в юникоде (кодировка UTF-16 LE). То есть создать юникодный INI‐файл функцией WritePrivateProfileString нельзя, но можно создать сторонними программами, например, блокнотом. Это поведение оставлено для совместимости со старыми версиями программ.
Смотреть что такое "файл инициализации" в других словарях:
Файл инициализации — Редактирование файла INI с помощью англ. Initialization file) это файл конфигурации, который содержит данные настроек для Microsoft Windows, Windows NT и некоторых приложений. Появились с самых первых версий Windows. В версии Windows 1.01 это… … Википедия
CCleaner — CCleaner … Википедия
Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ … Википедия
Паскаль (язык) — Pascal Семантика: процедурный Тип исполнения: компилятор Появился в: 1970 г. Автор(ы): Никлаус Вирт Паскаль (англ. Pascal) высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко… … Википедия
Init — init (сокращение от англ. initialization инициализация) программа в UNIX и Unix подобных системах, которая запускает все остальные процессы. Работает как демон и обычно имеет PID 1. Обычно (согласно Filesystem Hierarchy… … Википедия
Файлообменные сети — Файлообменная сеть – собирательное название сетей для совместного использования файлов. Часто в основе файлообменных сетей лежат одноранговые компьютерные сети, основанные на равноправии участвующих в обмене файлами, то есть каждый участник … Энциклопедия ньюсмейкеров
udev — Тип Device node Разработчик Greg Kroah Hartman и Kay Sievers Написана на С Операционная система Linux (ядро) Первый выпуск ноябрь 2003 года Последняя версия 184 (30 мая … Википедия
Процесс запуска Windows NT — Процесс запуска Windows NT это процесс инициализации операционных систем Microsoft Windows NT, Windows 2000, Windows XP и Windows Server 2003. В Windows Vista процесс сильно изменён (см. Windows Vista startup process). Содержание 1 Фаза… … Википедия
Коды ошибок BIOS — Во время начальной загрузки компьютера при помощи программ, записанных в BIOS происходит первоначальная проверка. В случае сбоя во время проверки BIOS может выдать информацию, позволяющую выявить причину сбоя. Среди таких способов есть вывод… … Википедия
Редактирование файла INI с помощью англ. Initialization file ) — это файл конфигурации, который содержит данные настроек для Microsoft Windows, Windows NT и некоторых приложений.
Появились с самых первых версий Windows. В версии Windows 1.01 это был только файл WIN.INI. В Windows 3.0 добавился файл SYSTEM.INI. А затем их количество начало расти быстро и бесконтрольно.
Начиная с Windows 95, INI файлы считаются устаревшими и в качестве замены им системный реестр (Registry). Тем не менее INI файлы продолжают использоваться как приложениями других прозводителей, так и компонентами ОС от Microsoft. Например, файл boot.ini используется в Windows NT4/2000/XP при загрузке для выбора из нескольких ОС.
Хотя INI файлы и приобрели популярность в Windows, они могут использоваться в любой ОС. Несложная структура этого формата позволяет легко обрабатывать их программно и имеет достаточно интуитивно понятный вид для чтения и изменения человеком. Существуют текстовые редакторы (например, подсветку синтаксиса и фолдинг для этого формата, что облегчает редактирование INI файлов вручную.
Смотреть что такое "Файл инициализации" в других словарях:
файл инициализации — Специальный текстовый файл, используемый при загрузке среды и отдельных программ для начальной установки параметров. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в … Справочник технического переводчика
CCleaner — CCleaner … Википедия
Паскаль (язык программирования) — Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ … Википедия
Паскаль (язык) — Pascal Семантика: процедурный Тип исполнения: компилятор Появился в: 1970 г. Автор(ы): Никлаус Вирт Паскаль (англ. Pascal) высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко… … Википедия
Init — init (сокращение от англ. initialization инициализация) программа в UNIX и Unix подобных системах, которая запускает все остальные процессы. Работает как демон и обычно имеет PID 1. Обычно (согласно Filesystem Hierarchy… … Википедия
Файлообменные сети — Файлообменная сеть – собирательное название сетей для совместного использования файлов. Часто в основе файлообменных сетей лежат одноранговые компьютерные сети, основанные на равноправии участвующих в обмене файлами, то есть каждый участник … Энциклопедия ньюсмейкеров
udev — Тип Device node Разработчик Greg Kroah Hartman и Kay Sievers Написана на С Операционная система Linux (ядро) Первый выпуск ноябрь 2003 года Последняя версия 184 (30 мая … Википедия
Процесс запуска Windows NT — Процесс запуска Windows NT это процесс инициализации операционных систем Microsoft Windows NT, Windows 2000, Windows XP и Windows Server 2003. В Windows Vista процесс сильно изменён (см. Windows Vista startup process). Содержание 1 Фаза… … Википедия
Коды ошибок BIOS — Во время начальной загрузки компьютера при помощи программ, записанных в BIOS происходит первоначальная проверка. В случае сбоя во время проверки BIOS может выдать информацию, позволяющую выявить причину сбоя. Среди таких способов есть вывод… … Википедия
файл инициализации
Специальный текстовый файл, используемый при загрузке среды и отдельных программ для начальной установки параметров.
[Е.С.Алексеев, А.А.Мячев. Англо-русский толковый словарь по системотехнике ЭВМ. Москва 1993]
Достоинства и недостатки
- простой текстовый формат, который можно редактировать даже в блокноте.
Недостатки прямо вытекают из текстового формата и старых версий Windows и оставлены для совместимости:
- файл инициализации не может быть больше 32 килобайт;
- для хранения юникодных строк файл необходимо создавать не через официальные функции, а сторонними программами;
- при записи в файл из строки теряется начальная кавычка «“», при чтении — исчезают начальные и конечные кавычки;
- отсутствует настройка доступа: ты не можешь сказать «кто угодно может редактировать эту секцию, а другую могут изменять только администраторы»;
- INI‐файлы содержат только строки, для хранения двоичных данных необходимо кодировать их в строку;
- чтение INI‐файла — медленная операция, каждый раз при открытии файла требуется прочитать его в память до конца и разобрать на секции;
- INI‐файлы имеют только два уровня вложенности: секции и пары «ключ=значение», секции внутри секций не поддерживаются;
- многие программы работают с файлами напрямую, минуя официальные функции, такие программы содержат ошибки или ограничения в своих парсерах INI‐файлов, так что на практике ты можешь столкнуться с ситуацией, когда невозможно хранить строку длиннее 80 символов, иначе вылетит другая программа, которая читает этот файл.
Корпорация Microsoft рекомендует для хранения настроек в новых версиях программ использовать реестр.
GetPrivateProfileInt
Если значение в файле инициализации представлено числом, то его проще получить функцией GetPrivateProfileInt.
Параметры
lpAppName: Имя секции для получения параметра. lpKeyName: Имя ключа. nDefault: Значение по умолчанию, которое возвратит функция, если ключ не будет найден. lpFileName: Имя INI‐файла. Если имя не содержит полный путь к файлу, то функция будет искать его в папке Windows.
Возвращаемое значение
Функция возвращает число, представленное в INI‐файле. Если ключ не найден, будет возвращено значение по умолчанию.
См. также
WritePrivateProfileString
Сохраняет или удаляет значение в INI‐файле.
Параметры
lpAppName: Имя секции для записи. lpKeyName: Имя ключа. Если этот параметр будет равен NULL, то вся секция вместе со всеми ключами будет удалена. lpString: Строка, которая будет записана как значение ключа. Если этот параметр равен NULL, то ключ будет удалён. lpFileName: Имя INI‐файла. Если имя не содержит полный путь к файлу, то функция будет искать его в папке Windows. Если файл не существует, то он будет создан в кодировке ANSI. Значение будет записано в юникодной кодировке только если файл уже существует в юникодной кодировке, иначе значени ключа перед записью будет сконвертировано в кодировку ANSI.
Возвращаемое значение
Если функция выполнилась успешно, то возвращаемое значение не ноль.
При ошибке функция возвращает ноль. Для получения дополнительных сведений об ошибке можно вызвать функцию GetLastError.
Примеры
Далее будут примеры использования с учётом юникода, а значит, программа будет корректно читать и записывать русские буквы.
GetPrivateProfileString
Получает строковое значение ключа из INI‐файла.
Параметры
lpAppName: Имя секции для получения параметра. Если этот параметр равен NULL, то функция возвратит все секции в файле. lpKeyName: Имя ключа. Если этот параметр равен NULL, то функция возвратит все включи в данной секции. lpDefault: Значение по умолчанию, которое возвратит функция, если ключ не будет найден. Если параметр равен NULL, то значением по умолчанию считается пустая строка ““. Не следует указывать здесь строку с завершающими пустыми символами. lpReturnedString: Указатель на буфер (строку), куда функция запишет значение ключа. nSize: Размер передаваемого в функцию буфера в символах. lpFileName: Имя INI‐файла. Если имя не содержит полный путь к файлу, то функция будет искать его в папке Windows.
Возвращаемое значение
Функция возвращает количество скопированных символов в буфер не включая нулевой символ.
Для получения дополнительных сведений об ошибке можно вызвать функцию GetLastError.
Удаление ключа
Чтобы удалить ключ из секции, необходимо записать NULL в значение параметра.
Удалим ключ «Имя» из секции «Пользователь»:
Тематики
Тематики
Справочник технического переводчика. – Интент . 2009-2013 .
Формат файла
Не существует официальной спецификации формата, есть лишь общие принципы.
Формат INI‐файла очень прост: файл разделён на секции (или разделы), в каждой секции может находиться произвольное число записей вида «ключ=значение». Секции указываются в квадратных скобках. Имена ключей в разных секциях могут совпадать.
В INI‐файлах предусмотрены комментарии — это строки, начинающиеся с точки с запятой.
Удаление секции
Аналогично удалению ключа из файла конфигурации удаляются целые секции. Записываем NULL в имя ключа:
Не забываем сохранять исходный код в кодировке UTF-8 или UTF-16, а сам INI‐файл в юникоде (UTF-16).
файл инициализации
Специальный текстовый файл, используемый при загрузке среды и отдельных программ для начальной установки параметров.
[Е.С.Алексеев, А.А.Мячев. Англо-русский толковый словарь по системотехнике ЭВМ. Москва 1993]
Получение значения ключа
Создай в блокноте текстовый файл «configuration.ini» и сохрани его в кодировке Unicode (UTF-16):
Исходный код для чтения файла тоже необходимо сохранить в юникодной кодировке, например, в UTF-8 или UTF-16.
Смотреть что такое "initialization file" в других словарях:
initialization file — pradinių nuostatų failas statusas T sritis informatika apibrėžtis Failas, kuriame laikomos programos ↑nuostatos, priskiriamos programai, kai ji paleidžiama. Kai baigiamas darbas su programa, paprastai tuo metu galiojančios nuostatos įrašomos į šį … Enciklopedinis kompiuterijos žodynas
Initialization vector — In cryptography, an initialization vector (IV) is a block of bits that is required to allow a stream cipher or a block cipher to be executed in any of several streaming modes of operation to produce a unique stream independent from other streams… … Wikipedia
initialization — initialize UK US (UK also initialise) /ɪˈnɪʃəlaɪz/ verb [I or T] IT ► to prepare a computer program or system to start working: »Please wait while the system is initializing. ► to prepare a computer disk for use so that it can store and read data … Financial and business terms
INI file — The INI file format is a standard for configuration files for some platforms or software. INI files are simple text files with a basic structure composed of sections and properties . They are deprecated standard on the Windows operating system.… … Wikipedia
Windows file types — Computer files are encoded in many different file types. Here is a list of file extensions that are associated with various commonly used file types.*AAC audio file .aac *AutoIt Version 3 file .au3 *Microsoft Audio Video Interweave (AVI) file… … Wikipedia
Privacy in file sharing networks — File sharing peer to peer (P2P) systems like Gnutella, KaZaA, and eDonkey/eMule, took the Internet by a storm in recent years, with estimated user population of millions. Measurements show that about 50% of the file exchanges are illegal copies… … Wikipedia
Resource Acquisition Is Initialization — Resource Acquisition Is Initialization, often referred to by the acronym RAII, is a popular design pattern in many object oriented languages like C++, D and Ada. The technique, invented by Bjarne Stroustrupcite book title = The Design and… … Wikipedia
Идиома Resource Acquisition Is Initialization — Получение ресурса есть инициализация (англ. Resource Acquisition Is Initialization (RAII)) шаблон проектирования объектно ориентированного программирования, смысл которого заключается в том, что получение некоторого ресурса совмещается с… … Википедия
Configuration file — rc file redirects here. For Microsoft Windows resource scripts, see Resource (Windows). A configuration file for GNU GRUB being modified with gedit. This file contains a list of Operating Systems, which GNU GRUB reads and presents to the user as… … Wikipedia
Andrew File System — The Andrew File System (AFS) is a distributed networked file system which uses a set of trusted servers to present a homogeneous, location transparent file name space to all the client workstations. It was developed by Carnegie Mellon University… … Wikipedia
INI — Initialization file (Computing » File Extensions) **** Instituto Nacional Indigenista (International » Mexican) **** Instituto Nacional Indigenista (International » Spanish) ** Initialization Files (Computing » Drivers) ** Instituto Nacional de… … Abbreviations dictionary
Файлы инициализации (нередко называемые также INI-файлами по причине характерного для них расширения .INI) представляют собой последовательные текстовые файлы, которые используются для хранения конфигурационных данных системы. Применение файлов инициализации является наиболее распространенным способом хранения данных конфигурации отдельно от других приложений. Кроме того, благодаря использованию файлов INI в приложении появляется возможность сгруппировать в логическом порядке связанные друг с другом параметры настройки.
В интерфейсе Win32 API полностью поддерживаются все функции файлов инициализации. Однако данные конфигурации приложений Win32 рекомендуется (и даже требуется ради соответствия фирменному знаку) сохранять в системном реестре (функции которого подробно рассматриваются в главе 19). Тем не менее, функции файлов инициализации все еще остаются весьма полезными в плане сохранения и выборки информации из текстовых файлов, в частности, файлов установки, называемых также INF-файлами.
Структура файла инициализации
Подразделения INI-файла, называемые также разделами (sections), отмечены заключенными в квадратные скобки строками, называемыми именами разделов (section names). В разделе может храниться любое число ключей. Ключ (key) представляет собой всего лишь поименованный параметр настройки конфигурации, который может быть установлен или запрошен программным путем. Строка присвоения ключу некоторого значения состоит из имени ключа (key name) или признака (tag), знака равенства и значения ключа (key value), возвращаемого системой для данного ключа. В одной строке можно выполнить лишь одно присвоение значения ключу. Комментарии обозначаются точкой с запятой. А вот размещение комментариев в строках имен разделов не допускается. Ниже показан пример, как может выглядеть раздел INI-файла:
COLOR = BLUE ; Комментарий
; Комментарий может также представлять собой отдельную строку. LETTERS="a;b;c;d" ; Наличие точки с запитой допускается во взятом в ; кавычки значении ключа
Между именем ключа и знаком равенства или значением ключа и знаком равенства можно помещать любое количество пробелов. Имена разделов и ключей сохраняются в INI-файлах в том же регистре, в котором они записывались первоначально. Тем не менее, поиск наименований разделов и ключей всегда выполняется без учета регистра.
Доступ к файлам инициализации
Большинство файлов инициализации представляет собой также приватные профильные файлы (private profile files). Этот термин первоначально был введен в Windows 3.1 с тем, чтобы провести различие между INI-файлами для приложений и файлом WIN.INI (единственным INI-файлом, существовавшим до появления Windows 3.1). Так, функции WritePrivateProfileString и WritePrivateProfilelnt позволяют сохранять в приватном профильном файле соответственно строковые и целые значения ключа. Функции GetPrivateProfileString и GetPrivateProfilelnt позволяют выбирать из приватного профильного файла соответственно строковые и целые значения. Функции GetPrivateProfileSection и WritePrivateProfileSectionName позволяют выполнять чтение и запись целых разделов INI-файла. Кроме того, в Win32 появилась функция GetPrivateProfileSectionName интерфейса API, которая возвращает имена всех разделов, определенных в INI-файле.
Приватные профильные файлы, как правило, хранятся в каталоге Windows либо в том каталоге, в котором установлено соответствующее приложение. По умолчанию поиск INI-файла в Windows осуществляется в каталоге Windows. Однако полностью уточненное имя пути к INI-файлу можно указать при вызове функций инициализации приватных профильных файлов, поэтому INI-файлы на самом деле могут быть размещены где угодно.
Для доступа к файлу WIN.INI в приложениях используется параллельный набор функций интерфейса API. Так, функции GetProfileString и GetProfilelnt осуществляют соответственно выборку строковых и целых значений ключей из файла WIN.INI. Функции WriteProfileString и WriteProfilelnt сохраняют в файле WIN.INI соответственно строковые и целые значения. Функции GetProfileSection и WriteProfileSection допускают чтение и запись целых разделов в файл WIN.INI. Однако файл WIN.INI ничем особенным не отличается от остальных файлов инициализации, поэтому функции интерфейса API для прватных профильных файлов применимы и к файлу WIN.INI, если он указан в формате имени INI-файла.
Отображение приватных INI-файлов
В Windows 2000 приватные профильные файлы вместо файлов инициализации могут отображаться в системный реестр. Подобное отображение происходит при указании файла инициализации и соответствующего раздела в системном реестре под ключом HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\IniFaeMapping Отобоажение окажется вполне вероятным в том случае, если в приложении будут видоизменены файлы инициализации компонентов системы, в частности, файлы CONTROL.INI, SYSTEM.INI и WINFILE.INI. В подобного рода случаях функции приватных профильных файлов воздействуют на информацию в системном реестре, а не в файле инициализации. Для обнаружения информации об инициализации в функциях Win32, предназначенных для профильных файлов, используется следующая процедура:
Запись в файл
Попробуем сменить имя пользователя:
Полезное
Читайте также: