INI 設定 (.ini)
事實上的產業設定標準 標準Windows Initialization Configuration (INI) 是由 Microsoft Windows 推廣的經典人類可讀設定檔格式,將應用程式設定組織到包含 key=value 對的具名 [sections] 中。
將 INI 轉換為 JSON
免費的瀏覽器端 INI 轉 JSON 轉換器。在您的裝置上即時轉換檔案。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 INI 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 INI 檔案:
十六進位簽章(偏移量 0):
5B ... 5DASCII 表示法: [...]
標準化: 事實上的產業設定標準
技術規格
| 容器架構 | 結構化為 [section] 標頭的純文字設定檔,內含 key = value 對與註解(; 或 #) |
| 壓縮 | 未壓縮的文字檔 |
| 位元組序 | UTF-8 或 ANSI 文字串流 |
| 色彩空間 | 不適用(設定檔) |
| 色版與結構 | 依區段命名空間分類的鍵值設定屬性 |
| 最大尺寸 | 16 位元 Windows 中的歷史 64 KB 限制;在現代實作中無限制 |
| 透明度 | 無 |
| 串流與漸進式 | 循序逐行串流剖析器 |
技術比較矩陣:INI 對比競爭格式
| 技術屬性 | INI (目前) | JSON | YAML | TOML |
|---|---|---|---|---|
| 語法複雜度 | 最簡單(section + key=val) | 嚴格的括號與引號 | 對縮排敏感的空白字元 | 現代具型別表格 |
| 註解支援 | 原生(; 與 # 註解) | 規格中不支援註解 | 原生(# 註解) | 原生(# 註解) |
| 巢狀結構 | 僅限 1 層區段 | 無限巢狀物件/陣列 | 無限巢狀樹狀結構 | 結構化表格陣列 |
| 資料型別 | 隱含字串(應用程式會剖析型別) | 明確的數字、布林值、陣列 | 明確的型別與錨點 | 明確的日期、數字、陣列 |
常見損壞模式與十六進位修復指南
應用程式忽略設定或無法啟動。
根本原因: 缺少區段標題括號(例如 '[Settings' 而非 '[Settings]')或值中有未跳脫的等號。
修復: 使用 File2File.app 設定格式化工具驗證並修復 INI 語法。
安全性分析與解析器攻擊向量
INI 剖析器在反序列化為物件時,必須防範區段隱碼攻擊與原型汙染。
已知攻擊向量
- INI 隱碼攻擊(INI injection),使用者輸入中的換行字元會建立未授權的設定區段。
- JavaScript INI 剖析器中的原型汙染(prototype pollution),將屬性指派給「__proto__」。
- 透過深度遞迴的區段名稱展開造成阻斷服務。
防禦最佳實務: 清理使用者輸入以禁止換行字元,並防範原型汙染。
歷史起源與里程碑
2000Python 的標準函式庫包含 configparser,用於處理 INI 檔案。
1995Windows 95 引入 Windows 登錄檔,以取代龐大的系統 INI 檔案(SYSTEM.INI、WIN.INI)。
1985Microsoft Windows 1.0 引入 WIN.INI 作為核心作業系統設定資料庫。
主要優勢與優點
- 極為簡潔、直覺的語法:非技術使用者也能輕鬆閱讀和修改設定。
- 幾乎所有程式語言都具備原生剖析 API(Python configparser、PHP parse_ini_file、C#)。
- 區段命名空間可防止不同應用程式功能之間的設定衝突。
技術限制與缺點
- 沒有正式的國際標準:註解字元(; 與 #)和跳脫規則在不同的剖析器之間會有所不同。
- 扁平階層:不支援深度巢狀陣列或沒有自訂分隔符號的複雜結構化物件。
- 所有值皆讀取為字串,需要應用程式手動剖析整數、布林值和浮點數。
有趣的技術冷知識
- 在 Windows 3.1 中,整個作業系統中的每一個設定都只儲存在兩個檔案中:WIN.INI 與 SYSTEM.INI。
- Git 使用 INI 格式來存放位於 '.git/config' 的主要儲存庫設定檔。
- Linux 上的桌面捷徑檔案(XDG Desktop Entry '.desktop' 檔案)是使用標準 INI 語法建構的。
常見技術問題
INI 檔案是用來做什麼的?
桌上型軟體、遊戲和開發人員工具(例如 Git 設定檔與 PHP.ini)會使用 INI 檔案,以容易閱讀的格式儲存使用者偏好設定與組態設定。
我要如何編輯 INI 檔案?
您可以使用任何基本的文字編輯器(例如記事本、TextEdit、VS Code)開啟並編輯 INI 檔案,也可以直接使用 File2File.app 線上編輯。
我可以將 INI 轉換為 JSON 或 YAML 嗎?
可以。File2File.app 可以在您的瀏覽器中立即將 INI 檔案轉換為清晰易讀的 JSON、YAML 或 TOML 格式。