הגדרות INI (.ini)

תקן תקן

Windows Initialization Configuration (INI) הוא פורמט קובץ תצורה קריא לאדם, שהתפרסם בזכות Microsoft Windows ומארגן הגדרות יישום במקטעים בעלי שמות שמכילים צמדי מפתח=ערך.

המר INI ל-JSON

ממיר חינמי מ-INI ל-JSON פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.

בדיקה ומטא-נתונים

מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:

בחר או גרור קבצים לכאן

פרטי - הקבצים לעולם אינם עוזבים את המכשיר שלך

או הדבק Ctrl+V
הבטחת פרטיות ללא העברת נתונים ברשת: 0 בייט הועלו לשרתים חיצוניים. כל העיבוד התבצע באופן מקומי בארגז החול של הדפדפן שלך.

חתימת כותרת ברמת הבייט (Magic Bytes)

מערכות הפעלה ומנתחי קבצים מזהים קבצי INI על ידי בדיקת רצף הבייטים הבינארי הראשוני:

חתימת HEX (היסט 0):

5B ... 5D

ייצוג ASCII: [...]

תקינה: תקן תצורה בפועל בתעשייה

מפרט טכני

מבנה המכולהקובץ תצורה בטקסט פשוט, הבנוי מכותרות [section] שמכילות צמדי key = value והערות (; או #)
דחיסהקובץ טקסט לא דחוס
סדר בתים (Endianness)זרם טקסט UTF-8 או ANSI
מרחבי צבעלא רלוונטי (קובץ תצורה)
ערוצים ומבנהמאפייני תצורה מסוג מפתח-ערך, המסודרים לפי שמות מקטעים
ממדים מרבייםמגבלה היסטורית של 64 KB ב-Windows של 16 סיביות; ללא מגבלה במימושים מודרניים
שקיפותאין
הזרמה ופרוגרסיביותמנתח סדרתי הקורא שורה אחר שורה

מטריצת השוואה טכנית: INI מול מתחרים

תכונה טכניתINI (נוכחי)JSONYAMLTOML
מורכבות תחבירפשוט ככל האפשר (מקטע + key=val)סוגריים ומרכאות קפדנייםרווחים רגישים להזחהטבלאות מוקלדות מודרניות
תמיכה בהערותתמיכה מובנית (הערות ; ו-#)אין תמיכה בהערות במפרטמקומי (הערות #)מקומי (הערות #)
מבנים מקונניםמקטעים ברמה אחת בלבדאובייקטים/מערכים מקוננים אינסופייםעצים מקוננים אינסופייםמערכי טבלאות מובנים
סוגי נתונים (Data Typing)מחרוזות משתמעות (היישום מנתח את הסוגים)מספרים מפורשים, בוליאנים, מערכיםסוגים מפורשים ועוגניםתאריכים, מספרים ומערכים מפורשים

מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)

היישום מתעלם מההגדרות או אינו מצליח להפעיל.

גורם שורש: חסר סוגר בכותרת מקטע (למשל [Settings במקום [Settings]) או סימן שווה בערך שלא עבר escaping.

שחזור: בדוק ותקן את תחביר INI באמצעות File2File.app Config Formatter.

ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)

מנתחי INI צריכים להגן מפני הזרקת מקטעים ומפני הרעלת אב-טיפוס בעת המרת הנתונים לאובייקטים.

ווקטורי תקיפה ידועים

  • הזרקת INI שבה הוספת שורה חדשה לקלט משתמש יוצרת מקטעי תצורה לא מורשים.
  • הרעלת אב-טיפוס במנתחי INI מבוססי JavaScript, המקצים ערכים למאפיין __proto__.
  • מניעת שירות באמצעות הרחבה רקורסיבית לעומק של שמות מקטעים.

שיטות מומלצות להגנה: נקה קלט משתמש כדי למנוע הזרקת שורות חדשות, והגן מפני הרעלת אב-טיפוס.

היסטוריה ואבני דרך

2000הספרייה התקנית של Python כוללת את configparser לעבודה עם קובצי INI.
1995Windows 95 מציג את ה-Registry של Windows כדי להחליף קובצי INI מערכתיים מונוטוליטיים (SYSTEM.INI, WIN.INI).
1985Microsoft Windows 1.0 מציג את WIN.INI כמסד הנתונים המרכזי לתצורת מערכת ההפעלה.

יתרונות מרכזיים

  • תחביר נקי ואינטואיטיבי במיוחד: משתמשים שאינם טכניים יכולים לקרוא ולשנות הגדרות בקלות.
  • ממשקי API לניתוח זמינים כמעט בכל שפת תכנות (configparser ב-Python, ‏parse_ini_file ב-PHP ו-C#).
  • מרחבי שמות של מקטעים מונעים התנגשויות בהגדרות בין תכונות יישום שונות.

מגבלות טכניות וחסרונות

  • אין תקן בינלאומי רשמי: תווי ההערה (; או #) וכללי הבריחה משתנים בין מנתחים.
  • היררכיה שטוחה: אינו תומך במערכים מקוננים עמוק או באובייקטים מובנים מורכבים ללא מפרידים מותאמים אישית.
  • כל הערכים נקראים כמחרוזות, מה שמחייב יישומים לנתח ידנית מספרים שלמים (integers), בוליאנים ונקודה צפה.

עובדות טכניות מעניינות

  • ב-Windows 3.1, ההגדרות של מערכת ההפעלה נשמרו בשני קבצים בלבד: WIN.INI ו-SYSTEM.INI.
  • Git משתמש בפורמט INI עבור קובץ התצורה הראשי של המאגר הממוקם ב-'.git/config'.
  • קובצי קיצורי דרך שולחניים בלינוקס (קובצי '.desktop' של XDG Desktop Entry) בנויים באמצעות תחביר INI סטנדרטי.

שאלות טכניות נפוצות

למה משמש קובץ INI?

קובצי INI משמשים תוכנות שולחניות, משחקים וכלי פיתוח (כגון Git config ו-PHP.ini) לשמירת העדפות משתמש והגדרות תצורה בפורמט קריא ופשוט.

איך אפשר לערוך קובץ INI?

אפשר לפתוח ולערוך קובצי INI בכל עורך טקסט בסיסי, כגון Notepad, ‏TextEdit או VS Code, או ישירות באינטרנט באמצעות File2File.app.

האם אפשר להמיר INI ל-JSON או ל-YAML?

כן. File2File.app יכול להמיר קובצי INI ל-JSON, ל-YAML או ל-TOML ישירות בדפדפן.