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

De มาตรฐาน

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

แปลง INI เป็น JSON

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

ตรวจสอบและดู Metadata

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

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

การแปลงไฟล์แบบส่วนตัว 100% ในเบราว์เซอร์ - ไฟล์จะไม่ rời ออกจากอุปกรณ์ของคุณ

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

ลายเซ็นส่วนหัวในระดับไบต์ (Magic Bytes)

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

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

5B ... 5D

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

มาตรฐาน: De facto industry configuration standard

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

สถาปัตยกรรมคอนเทนเนอร์Plaintext configuration file structured into [section] headers containing key = value pairs and comments (; or #)
การบีบอัดUncompressed text file
การจัดลำดับไบต์ (Byte Endianness)UTF-8 or ANSI text stream
พื้นที่สีN/A (Configuration File)
ช่องสัญญาณและโครงสร้างKey-value configuration properties categorized by section namespaces
ขนาดสูงสุดHistorical 64 KB limit in 16-bit Windows; unlimited in modern implementations
ความโปร่งใสNone
การสตรีมและแบบโปรเกรสซีฟSequential line-by-line streaming parser

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

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

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

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

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

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

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

ตัววิเคราะห์ INI จะต้องป้องกันการโจมตีการฉีดส่วน (section injection) และมลพิษของต้นแบบ (prototype pollution) เมื่อแปลงสภาพซีเรียลไลซ์เป็นออบเจ็กต์

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

  • การฉีด INI ซึ่งการแทรกบรรทัดใหม่ในอินพุตของผู้ใช้จะสร้างส่วนการกำหนดค่าที่ไม่ได้รับอนุญาต
  • มลพิษของต้นแบบในตัววิเคราะห์ JavaScript INI ที่กำหนดให้กับ '__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) ป้องกันการชนกันของการตั้งค่าข้ามฟีเจอร์แอปพลิเคชันต่างๆ

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

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

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

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

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

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

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

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

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

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

ได้ File2File.app สามารถแปลงไฟล์ INI เป็นรูปแบบ JSON, YAML หรือ TOML ที่สะอาดตาได้ทันทีในเบราว์เซอร์ของคุณ