INI 设置 (.ini)

事实上的行业配置标准 标准

Windows 初始化配置文件(INI)是由 Microsoft Windows 推广的经典人类可读配置文件格式,可将应用程序设置组织到带名称的 [sections] 中,并以 key=value 键值对表示。

将 INI 转换为 JSON

免费的浏览器端 INI 转 JSON 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 INI 文件:

选择或将文件拖放到此处

隐私保护 - 文件不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (魔数)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 INI 文件:

十六进制签名 (偏移量 0):

5B ... 5D

ASCII 表示形式: [...]

标准化: 事实上的行业配置标准

技术规格

容器架构纯文本配置文件,由 [section] 标题和 key = value 键值对组成,并可包含注释(; 或 #)
压缩方式未压缩文本文件
字节序UTF-8 或 ANSI 文本流
色彩空间不适用(配置文件)
通道与结构按节命名空间分类的键值配置属性
最大尺寸16 位 Windows 中历史上限为 64 KB;现代实现中不设上限
透明度不支持
流式传输与渐进式加载支持按行顺序流式解析

技术对比矩阵:INI 对比同类产品

技术属性INI (当前)JSONYAMLTOML
语法复杂度最简单(节 + 键=值)严格使用括号和引号对缩进敏感的空白字符现代类型化表格
注释支持原生支持(; 和 # 注释)规范中不支持注释原生支持(# 注释)原生支持(# 注释)
嵌套结构仅支持一级节无限嵌套的对象/数组无限嵌套的树结构化表格数组
数据类型隐式字符串(应用程序解析类型)显式数字、布尔值、数组显式类型和锚点显式日期、数字、数组

常见损坏模式与十六进制恢复指南

应用程序忽略设置或无法启动。

根本原因: 缺少节标题括号(例如写成 '[Settings' 而不是 '[Settings]')或值中包含未转义的等号。

恢复方法: 使用 File2File.app 配置格式化工具验证并修正 INI 语法。

安全分析与解析器攻击向量

INI解析器在反序列化为对象时,必须防范节注入攻击和原型污染。

已知攻击向量

  • INI注入:用户输入中的换行符插入会创建未经授权的配置节。
  • JavaScript INI解析器中赋值给 '__proto__' 的原型污染。
  • 通过深度递归展开节名称造成拒绝服务。

防御性最佳实践: 清理用户输入以禁止换行符,并防范原型污染。

历史渊源与里程碑

2000Python 标准库包含用于处理 INI 文件的 configparser。
1995Windows 95引入Windows注册表以取代单体系统INI文件(SYSTEM.INI、WIN.INI)。
1985微软Windows 1.0引入WIN.INI作为核心操作系统配置数据库。

核心优势与特点

  • 语法简洁直观:非技术用户也能轻松阅读和修改设置。
  • 几乎每种编程语言中都有原生解析API(Python configparser、PHP parse_ini_file、C#)。
  • 节命名空间可避免不同应用功能的设置相互冲突。

技术局限与劣势

  • 没有正式的国际标准:注释字符(;与#)和转义规则在不同的解析器之间有所不同。
  • 扁平化层次结构:如果没有自定义分隔符,则不支持深层嵌套数组或复杂的结构化对象。
  • 所有值都作为字符串读取,需要应用程序手动解析整数、布尔值和浮点数。

趣味技术冷知识

  • 在Windows 3.1中,整个操作系统中的每一个设置都仅存储在两个文件中:WIN.INI和SYSTEM.INI。
  • Git在其位于".git/config"的主仓库配置文件中使用INI格式。
  • Linux上的桌面快捷方式文件(XDG桌面条目".desktop"文件)使用标准的INI语法进行结构化。

常见技术问题

INI 文件有什么用途?

INI 文件被桌面软件、游戏和开发者工具(如 Git 配置和 PHP.ini)用于以易读的格式存储用户偏好和配置设置。

如何编辑 INI 文件?

您可以使用任何基础文本编辑器(如 Notepad、TextEdit、VS Code)打开和编辑 INI 文件,也可以直接在浏览器中使用 File2File.app 在线编辑。

我可以将 INI 转换为 JSON 或 YAML 吗?

可以。File2File.app 可以在您的浏览器中即时将 INI 文件转换为整洁的 JSON、YAML 或 TOML 格式。