การตั้งค่า INI (.ini)

มาตรฐานการกำหนดค่าที่ใช้กันทั่วไปในอุตสาหกรรม มาตรฐาน

Windows Initialization Configuration (INI) คือรูปแบบไฟล์กำหนดค่าคลาสสิกที่ Microsoft Windows ทำให้เป็นที่นิยมและอ่านเข้าใจได้ง่าย โดยจัดการตั้งค่าแอปพลิเคชันเป็น [sections] ที่มีชื่อ ซึ่งประกอบด้วยคู่ key=value

แปลง INI เป็น JSON

ตัวแปลงจาก INI เป็น JSON ฟรีในเบราว์เซอร์ แปลงไฟล์ได้ทันทีบนอุปกรณ์ของคุณ

ตรวจสอบไฟล์และข้อมูลเมตา

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

เลือกหรือวางไฟล์ที่นี่

เป็นส่วนตัว - ไฟล์จะไม่ออกจากอุปกรณ์ของคุณ

หรือวาง Ctrl+V
รับประกันความเป็นส่วนตัวโดยไม่มีการส่งข้อมูลผ่านเครือข่าย: อัปโหลด 0 ไบต์ไปยังเซิร์ฟเวอร์ภายนอก การประมวลผลทั้งหมดเกิดขึ้นภายในแซนด์บ็อกซ์ของเบราว์เซอร์ของคุณ

ลายเซ็นส่วนหัวระดับไบต์

ระบบปฏิบัติการและเครื่องมือวิเคราะห์ไฟล์จะระบุไฟล์ INI โดยการตรวจสอบลำดับไบต์ไบนารีส่วนต้น:

ลายเซ็น HEX (OFFSET 0):

5B ... 5D

การแสดงผลรูปแบบ ASCII: [...]

มาตรฐาน: มาตรฐานการกำหนดค่าที่ใช้กันทั่วไปในอุตสาหกรรม

ข้อมูลจำเพาะทางเทคนิค

สถาปัตยกรรมคอนเทนเนอร์ไฟล์กำหนดค่าแบบข้อความล้วนที่จัดโครงสร้างด้วยส่วนหัว [section] ซึ่งประกอบด้วยคู่ key = value และความคิดเห็น (; หรือ #)
การบีบอัดไฟล์ข้อความแบบไม่บีบอัด
การจัดลำดับไบต์สตรีมข้อความ UTF-8 หรือ ANSI
พื้นที่สีไม่เกี่ยวข้อง (ไฟล์กำหนดค่า)
ช่องสัญญาณและโครงสร้างคุณสมบัติกำหนดค่าแบบคีย์-ค่า แบ่งตามเนมสเปซของแต่ละส่วน
ขนาดสูงสุดในอดีตจำกัดที่ 64 KB บน Windows 16 บิต; การใช้งานสมัยใหม่ไม่จำกัดขนาด
ความโปร่งใสไม่มี
การสตรีมและแบบโปรเกรสซีฟตัวแยกวิเคราะห์สตรีมตามลำดับทีละบรรทัด

ตารางเปรียบเทียบทางเทคนิค: INI กับคู่แข่ง

คุณลักษณะทางเทคนิคINI (ปัจจุบัน)JSONYAMLTOML
ความซับซ้อนของไวยากรณ์ง่ายที่สุดเท่าที่จะเป็นไปได้ (ส่วน + key=val)วงเล็บและเครื่องหมายคำพูดที่เข้มงวดช่องว่างที่ไวต่อการเยื้องตารางที่ระบุชนิดข้อมูลได้แบบสมัยใหม่
การรองรับคอมเมนต์รองรับคอมเมนต์ในตัว (; และ #)สเปกไม่รองรับคอมเมนต์รองรับคอมเมนต์ # ในตัวรองรับคอมเมนต์ # ในตัว
โครงสร้างซ้อนกันส่วน 1 ระดับเท่านั้นออบเจ็กต์/อาร์เรย์ซ้อนกันไม่จำกัดโครงสร้างต้นไม้ซ้อนกันได้ไม่จำกัดอาร์เรย์ตารางที่มีโครงสร้าง
การกำหนดประเภทข้อมูลสตริงโดยปริยาย (แอปวิเคราะห์ประเภท)ตัวเลข บูลีน อาร์เรย์ที่ชัดเจนประเภทและแองเคอร์ที่ชัดเจนวันที่ ตัวเลข อาร์เรย์ที่ชัดเจน

รูปแบบความเสียหายทั่วไปและคู่มือการกู้คืน Hex

แอปพลิเคชันเพิกเฉยต่อการตั้งค่าหรือไม่สามารถเริ่มต้นได้

สาเหตุหลัก: วงเล็บเหลี่ยมปิดของส่วนหัวหายไป (เช่น '[Settings' แทนที่จะเป็น '[Settings]') หรือมีเครื่องหมายเท่ากับในค่าที่ไม่ได้ escape

การกู้คืน: ตรวจสอบและแก้ไขไวยากรณ์ INI โดยใช้ File2File.app Config Formatter

การวิเคราะห์ความปลอดภัยและเวกเตอร์การโจมตีตัวแยกวิเคราะห์

ตัวแยกวิเคราะห์ INI ต้องป้องกันการโจมตีด้วยการแทรก section และการปนเปื้อนพร็อตโทไทป์เมื่อแปลงข้อมูลเป็นออบเจ็กต์

เวกเตอร์การโจมตีที่ทราบ

  • การแทรก INI: การขึ้นบรรทัดใหม่ในอินพุตของผู้ใช้อาจสร้าง section การตั้งค่าที่ไม่ได้รับอนุญาต
  • การปนเปื้อนพร็อตโทไทป์ในตัวแยกวิเคราะห์ INI ของ JavaScript ที่กำหนดค่าให้กับ «__proto__»
  • การโจมตีแบบปฏิเสธการให้บริการผ่านการขยายชื่อส่วนแบบเรียกซ้ำที่ซ้อนลึก

แนวทางปฏิบัติที่ดีที่สุดในการป้องกัน: ทำความสะอาดอินพุตจากผู้ใช้เพื่อห้ามอักขระขึ้นบรรทัดใหม่ และป้องกันการปนเปื้อนพร็อตโทไทป์

ประวัติความเป็นมาและเหตุการณ์สำคัญ

2000ไลบรารีมาตรฐานของ Python มี configparser สำหรับจัดการไฟล์ INI
1995Windows 95 แนะนำ Windows Registry เพื่อแทนที่ไฟล์ INI ของระบบแบบโมโนลิธิก (SYSTEM.INI, WIN.INI)
1985Microsoft Windows 1.0 แนะนำ WIN.INI เป็นฐานข้อมูลการกำหนดค่าระบบปฏิบัติการหลัก

ข้อได้เปรียบและจุดเด่นสำคัญ

  • ไวยากรณ์ที่สะอาดและใช้งานง่ายเป็นพิเศษ: ผู้ใช้ที่ไม่ใช่สายเทคนิคสามารถอ่านและแก้ไขการตั้งค่าได้อย่างง่ายดาย
  • API การวิเคราะห์แบบเนทีฟในเกือบทุกภาษาโปรแกรม (Python configparser, PHP parse_ini_file, C#)
  • เนมสเปซของ section ช่วยป้องกันไม่ให้ชื่อการตั้งค่าของฟีเจอร์ต่างๆ ในแอปพลิเคชันซ้ำกัน

ข้อจำกัดทางเทคนิคและข้อควรพิจารณา

  • ไม่มีมาตรฐานสากลอย่างเป็นทางการ: อักขระสำหรับเขียนคอมเมนต์ (; หรือ #) และกฎการ escape แตกต่างกันไปตามตัวแยกวิเคราะห์
  • ลำดับชั้นแบน: ไม่รองรับอาร์เรย์ซ้อนกันลึกหรือออบเจ็กต์ที่มีโครงสร้างซับซ้อนโดยไม่มีตัวคั่นกำหนดเอง
  • ค่าทั้งหมดจะถูกอ่านเป็นสตริง แอปพลิเคชันจึงต้องแปลงค่าเป็นจำนวนเต็ม บูลีน และเลขทศนิยมด้วยตนเอง

เกร็ดความรู้ทางเทคนิคที่น่าสนใจ

  • ใน Windows 3.1 การตั้งค่าทุกรายการในระบบปฏิบัติการทั้งหมดจะถูกเก็บไว้ในไฟล์เพียงสองไฟล์คือ WIN.INI และ SYSTEM.INI
  • Git ใช้รูปแบบ INI สำหรับไฟล์กำหนดค่าที่เก็บข้อมูลหลักที่ตั้งอยู่ที่ '.git/config'
  • ไฟล์ทางลัดเดสก์ท็อปบน Linux (ไฟล์ XDG Desktop Entry '.desktop') มีโครงสร้างโดยใช้ไวยากรณ์ INI มาตรฐาน

คำถามทางเทคนิคที่พบบ่อย

ไฟล์ INI ใช้สำหรับทำอะไร?

ซอฟต์แวร์เดสก์ท็อป เกม และเครื่องมือสำหรับนักพัฒนา (เช่น ไฟล์กำหนดค่า Git และ PHP.ini) ใช้ไฟล์ INI เพื่อจัดเก็บค่ากำหนดของผู้ใช้และการตั้งค่าต่างๆ ในรูปแบบที่อ่านง่าย

ฉันจะแก้ไขไฟล์ INI ได้อย่างไร?

คุณสามารถเปิดและแก้ไขไฟล์ INI ด้วยโปรแกรมแก้ไขข้อความพื้นฐานใดก็ได้ เช่น Notepad, TextEdit, VS Code หรือแก้ไขทางออนไลน์ได้โดยตรงด้วย File2File.app

ฉันสามารถแปลง INI เป็น JSON หรือ YAML ได้หรือไม่?

ได้ File2File.app แปลงไฟล์ INI เป็นรูปแบบ JSON, YAML หรือ TOML ที่อ่านง่ายได้ทันทีในเบราว์เซอร์