ملف INI
ملف INI هو ملف تهيئة لبرامج الحاسوب، يتكون من نص عادي ذي بنية وصيغة تتألف من أزواج مفتاح-قيمة مُنظمة في أقسام. [ 1 ] اسم هذه الملفات مشتق من امتداد الملف INI ، اختصارًا لكلمة "initialization" (التهيئة )، المستخدم في نظام التشغيل MS-DOS ، الذي شاع استخدام هذه الطريقة في تهيئة البرامج. أصبح هذا التنسيق معيارًا غير رسمي في العديد من سياقات التهيئة، لكن العديد من التطبيقات على أنظمة تشغيل أخرى تستخدم امتدادات ملفات مختلفة، مثل conf و cfg . [ 2 ]
تاريخ
كانت الآلية الأساسية لتكوين البرامج في نظام التشغيل ويندوز في الأصل عبارة عن تنسيق ملف نصي يتألف من أسطر نصية تحتوي كل سطر على زوج واحد من المفتاح والقيمة، مُنظمة في أقسام. استُخدم هذا التنسيق لمكونات نظام التشغيل، مثل برامج تشغيل الأجهزة والخطوط ومشغلات بدء التشغيل. كما استُخدمت ملفات INI بشكل عام من قِبل التطبيقات لتخزين الإعدادات الفردية. [ 3 ]
تم الحفاظ على هذا التنسيق في منصات مايكروسوفت ويندوز ذات 16 بت حتى ويندوز 3.1x . بدءًا من ويندوز 95، فضّلت مايكروسوفت استخدام سجل ويندوز وبدأت بتوجيه المطورين بعيدًا عن استخدام ملفات INI للتكوين. استخدمت جميع الإصدارات اللاحقة من ويندوز سجل ويندوز لتكوين النظام، لكن التطبيقات المبنية على إطار عمل .NET تستخدم ملفات XML خاصة بامتداد .config . لا تزال وظائف ملفات التهيئة متاحة في ويندوز ويمكن للمطورين استخدامها.
إلى جانب برامج ويندوز، قد تستخدم البرامج المستقلة عن النظام الأساسي هذا التنسيق لملفات الإعدادات. كما تستخدم بعض ملفات الإعدادات الشبيهة بأنظمة يونكس تنسيقًا مشابهًا. يتميز تنسيق INI بسهولة قراءته وتحليله، مما يجعله مناسبًا لملفات الإعدادات التي لا تتطلب تعقيدًا كبيرًا.
انتشار
فيما يلي قائمة غير شاملة للأماكن التي تظهر فيها ملفات INI.
Desktop.iniلا تزال الملفات تُستخدم في نظام التشغيل ويندوز لضبط خصائص الدلائل، مثل تحديد أيقونة المجلد. [ 4 ] [ 5 ]- يستخدم ملف PHP
php.iniتنسيق INI. [ 6 ] [ 7 ] - ملف Git
.git/configمكتوب بصيغة INI. [ 8 ] - تُكتب إدخالات موقع freedesktop.org
*.desktopبصيغة INI. [ 9 ] *.serviceتُكتب ملفات تكوين وحدة systemd بصيغة INI. [ 10 ]- تمت كتابة ملف Netatalk
afp.confبلغة تكوين على غرار INI. [ 11 ] - ملف باكمان
pacman.confمكتوب بلغة INI. [ 12 ] app.iniتمت كتابة ملف تكوين Forgejo بصيغة INI . [ 13 ].editorconfigتمت كتابة ملف تكوين EditorConfig بصيغة INI . [ 14 ]
مثال
يحتوي ملف المثال التالي على قسمين: أحدهما لمالك البرنامج، والآخر لاتصال قاعدة بيانات الرواتب. وتُسجّل التعليقات آخر شخص قام بتعديل الملف وسبب التعديل.
; آخر تعديل في 1 أبريل 2001 بواسطة جون دو [المالك] الاسم = جون دو المنظمة = شركة أكمي ويدجتس.[قاعدة البيانات] ؛ استخدم عنوان IP في حال تعذر تحليل اسم الشبكة. الخادم = 192.0.2.62 المنفذ = 143 الملف = "payroll.dat"شكل
بمعناها الأوسع، تُعدّ صيغة INI صيغةً غير رسمية تُسهّل تطبيقها بشكلٍ مؤقت مع الحفاظ على إمكانية تعديلها من قِبل المستخدم. ونتيجةً لذلك، توجد العديد من المواصفات المختلفة (حيث يكون تطبيق المُحلِّل أحيانًا هو المواصفة الوحيدة المكتوبة)، وتُسمى هذه المواصفات بلهجات INI .
تعتمد تفسيرات ملفات INI بشكل كبير على الذوق الشخصي واحتياجات بيئة الحوسبة، مثل الحفاظ على المسافات البيضاء، ومعلومات نوع الحقل، وحساسية حالة الأحرف، أو محددات التعليقات المفضلة. وهذا ما يجعل ملفات INI عرضة للانتشار. ومع ذلك، تشترك التطبيقات التي تستخدم ملفات INI عادةً في سمات تصميم مشتركة: ملف نصي يتكون من زوج مفتاح-قيمة في كل سطر، مفصول بعلامة يساوي ، ومنظم في أقسام مشار إليها بأقواس مربعة.
في تفسيرها الأكثر تعقيدًا، يكون تنسيق INI قادرًا على التعبير عن تعبيرات S التعسفية ، مما يجعله مكافئًا للتنسيقات القياسية مثل XML أو JSON ، وإن كان ذلك بصيغة ليست ثابتة وقد يشعر البعض براحة أكبر.
نظرًا لعدم وجود تعريف دقيق لتنسيق ملف INI، فإن العديد من المحللات تدعم ميزات تتجاوز تلك التي تشكل النواة المشتركة. ويُعدّ الدعم المُطبّق متقلبًا للغاية. وقد بُذلت محاولات لإنشاء محللات قادرة على دعم أكبر عدد ممكن من اللهجات. [ 15 ]
أزواج المفتاح والقيمة
تُخزَّن البيانات في ملفات INI على شكل أزواج مفتاح-قيمة تُسمى المفتاح أو الخاصية . قد يُشير المفتاح إلى زوج المفتاح-القيمة بأكمله أو إلى مفتاحه فقط. تُسمى القيمة أيضًا اسم الخاصية . في تمثيلها النصي، يُمثَّل زوج المفتاح-القيمة بسطر واحد أو عدة أسطر، حيث تُحدَّد بداية القيمة بفاصل ، غالبًا ما يكون علامة يساوي ( = =، ASCII 0x3D)، ولكن أحيانًا يكون أيضًا نقطتين رأسيتين ( :، ASCII 0x3A) أو مسافة بيضاء (تُستخدم أحيانًا في بيئة GNU [ 15 ] ). يظهر مفتاح المفتاح على يسار الفاصل، وغالبًا ما يكون غير فارغ، ويجب ألا يحتوي على الفاصل. تسمح بعض الإصدارات بتسلسلات الهروب في القيمة.
في نظام ويندوز، تُعتبر علامة المساواة والفاصلة المنقوطة من الأحرف المحجوزة ولا يمكن استخدامهما في المفتاح. يقوم المحلل اللغوي بإزالة أي مسافة بيضاء تحيط بالمفتاح. يمكن أن تحتوي القيمة على أي حرف (في نمط ويندوز، لا توجد مسافة بيضاء تحيط بالفاصل: على سبيل المثال IconFile=Folder.ico).
قد تبدو أزواج المفتاح والقيمة نصيًا كما يلي:
المفتاح = المفتاح=v الاسم = القيمة sem = ; semver = v5822.433.2الأقسام
يمكن تجميع أزواج المفاتيح والقيم ضمن قسم . تتطلب بعض لهجات ملفات INI وجود كل زوج مفتاح-قيمة في قسم، بينما تسمح أخرى بما يُسمى بالخصائص العامة . [ 16 ] عند تجميع أزواج المفاتيح والقيم، يظهر اسم القسم في سطر منفصل، محاطًا بأقواس مربعة ( [مثل 0x5B و ]0x5D وفقًا لـ ASCII)، وينطبق على جميع أزواج المفاتيح والقيم في الأسطر اللاحقة حتى يتم تعريف قسم آخر. لا يوجد فاصل صريح لنهاية القسم (مثل فاصل XML ). وبالتالي، لا يمكن تداخل الأقسام بشكل عشوائي من الناحية التركيبية. عند الحاجة، يمكن تنفيذ التداخل من خلال تبسيط التسلسل الهرمي ودمجه مع حرف فاصل مخصص داخل اسم القسم (غالبًا 0x2E وفقًا لـ ASCII). غالبًا ما يتم دعم مستوى واحد من التداخل، يُسمى الأقسام الفرعية .</tag>.
مثال على مستند INI يستخدم أقسامًا متداخلة:
[ اسم المشروع] = خدمة تأجير البساتين (مع تطبيق) المنطقة المستهدفة = "منطقة خليج سان فرانسيسكو" ؛ ملاحظة: الإعلان عن الوظائف الشاغرة الفريق القانوني = (شاغر)[فاكهة "تفاح"] مشاكل العلامة التجارية = طعم متوقع = معروف[fruit.Date] الطعم = جديد، مشاكل العلامات التجارية = "غير محتملة حقًا"[فاكهة "توت العليق"] المشاكل المتوقعة = "اللوجستيات (فاكهة هشة)" مشاكل العلامة التجارية = \ ممكنة[fruit.raspberry.proponents.fred] التاريخ = 2021-11-23، 08:54 +0900 التعليق = "أحب الفاكهة الحمراء." [fruit "Date/proponents/alfred"] التعليق : لماذا، \ \ \ سأشتري التمر. # الطي: هل يُفسَّر "\\\\\nn" على أنه "\\n" أو "\n"؟ # أم أن "\\\\" يمنع الطي؟ المحرر = قد يحتوي اسمي على \ \ سطر جديد.التسلسل الهرمي (تداخل الأقسام)
تسمح بعض برامج التحليل بتداخل الأقسام، باستخدام النقاط كفواصل للمسار:
[section] domain = example.com[section.subsection] foo = barفي بعض الحالات يتم دعم التداخل النسبي أيضًا، حيث تعبر النقطة البادئة عن التداخل مع القسم السابق: [ 15 ]
[section] domain = example.com[.subsection] foo = barتاريخيًا، وُجدت طرق للتعبير عن التداخل كبديل للنقطة (على سبيل المثال، ملف تعريف IBM لنظام التشغيل Microsoft Windows devlist.ini، حيث استُخدمت الشرطة المائلة العكسية كفاصل للتداخل على شكل [A\B\C]; أو ملف Microsoft Visual Studio AEMANAGR.INI، الذي استخدم صيغة مختلفة تمامًا على شكل [A]و B,C,P = V). لم تُوفر بعض المحللات دعمًا للتداخل على الإطلاق، وكانت تتجاهل التسلسل الهرمي، ولكن كان من الممكن محاكاة التداخل جزئيًا من خلال استغلال حقيقة أن [A.B.C]يشكل مُعرّفًا فريدًا.
حساسية حالة الأحرف
أسماء الأقسام والخصائص في نظام التشغيل ويندوز غير حساسة لحالة الأحرف . [ 17 ] معظم تفسيرات ملفات INI على نمط يونكس تمنع طي حالة الأحرف تمامًا، على الرغم من أنه يُسمح أحيانًا بطي حالة الأحرف لاسم القسم [ 18 ] أو المفتاح [ 19 ] .
تعليقات
يشير السطر الذي يحتوي على مسافة بيضاء متصلة متبوعة بفاصلة منقوطة ( ;, ASCII 0x3E) إلى وجود تعليق . تسمح بعض لهجات ملفات INI باستخدام رمز الرقم ( #, ASCII 0x23) للدلالة على وجود تعليق، على غرار تعليقات سطر أوامر يونكس . تسمح بعض لهجات INI، وليس جميعها، بإضافة تعليق على سطر زوج المفتاح والقيمة أو سطر القسم (يُسمى تعليقًا مضمنًا )، بينما تتطلب بعضها وجود مسافة بيضاء تفصل القيمة أو قوس إغلاق القسم عن التعليق. مع ذلك، قد يتم تضمين رمز الرقم في اسم المفتاح في بعض اللهجات وتجاهله. صُممت أسطر التعليقات بحيث يتجاهلها المحلل اللغوي.
#! /bin/convert-ini-to-perl | perl | ssh wikipedia.org upload --sanitise=no ; غامض بدون معرفة إضافية بلهجة INI: ; هل القيمة "live" أم "live # dangerously"؟ I like to = live # dangerouslyالمتغير = أvar = a ; هذا تعليق مضمن foo = bar # هذا تعليق مضمن آخرفي إطار لغة WinAPI 's GetPrivateProfileString ، يجب أن تظهر التعليقات على أسطر منفصلة.
ترتيب الأقسام والخصائص
لا علاقة لترتيب الخصائص في قسم ما بترتيب الأقسام في ملف ما.
أسماء مكررة
تدعم معظم التطبيقات خاصية واحدة فقط باسم معين في القسم. قد يؤدي تكرار اسم الخاصية إلى إيقاف العملية ، أو تجاهلها (وحذف قيمتها)، أو استبدال القيمة المكررة (مع حذف القيمة الأولى). تستخدم بعض البرامج أسماء خصائص مكررة لتنفيذ خصائص متعددة القيم.
يختلف تفسير تعريفات الأقسام المتعددة التي تحمل الاسم نفسه. ففي بعض التطبيقات، تُدمج خصائص الأقسام المكررة ببساطة، كما لو كانت متجاورة. بينما قد تتجاهل تطبيقات أخرى بعض جوانب ملف INI أو تُلغيه.
القيم المذكورة
تسمح بعض التطبيقات بوضع القيم بين علامتي اقتباس، عادةً باستخدام علامات اقتباس مزدوجة و/أو علامات اقتباس علوية . يتيح ذلك تحديد المسافات البيضاء بشكل صريح، و/أو وضع الأحرف الخاصة بين علامتي اقتباس (مثل علامة المساواة، والفاصلة المنقوطة، إلخ). تدعم دالة GetPrivateProfileString القياسية في نظام ويندوز هذه الميزة، وستزيل علامات الاقتباس المحيطة بالقيم.
استمرار السطر
تحاكي بعض اللهجات بنية لغة C ، وتسمح بطي الأسطر باستخدام شرطة مائلة عكسية ( \، ASCII 0x5C) كآخر حرف في السطر. [ 20 ] في هذا النوع من استمرار الأسطر ، تؤدي الشرطة المائلة العكسية المتبوعة مباشرةً بـ EOL (نهاية السطر) إلى حذف الشرطة المائلة العكسية وفاصل الأسطر، مما يحول أسطر المستند إلى أسطر منطقية .
شخصيات الهروب
تقدم بعض اللهجات دعمًا متفاوتًا للهروب من الأحرف ، وعادةً ما يكون ذلك باستخدام حرف الشرطة المائلة العكسية ( \، ASCII 0x5C) كحرف خاص ومحاكاة بناء جملة C. [ 21 ]
ليس من الحكمة تفسير تسلسلات الهروب بشكل أعمى، حيث أن بعض المواصفات تقوم صراحةً بكتم الأحرف الخاصة بها لتسلسلات الهروب الشائعة. [ 22 ] [ 23 ]
| تسلسل | معنى |
|---|---|
\\ | \ ( شرطة مائلة عكسية واحدة ، لتجنب حرف الهروب) |
\' | الفاصلة العليا |
\" | علامات اقتباس مزدوجة |
\0 | حرف فارغ |
\a | جرس/تنبيه/صوتي |
\b | مسافة للخلف ، وحرف الجرس في بعض التطبيقات |
\t | علامة الجدولة |
\r | إرجاع السطر |
\n | تغذية السطر |
\; | فاصلة منقوطة |
\# | علامة الرقم |
\= | علامة يساوي |
\: | القولون |
\xhhhh | حرف يونيكود ذو رمز 0xhhhh، مشفر إما بنظام UTF-8 أو بنظام التشفير المحلي |
الوصول إلى ملفات INI
في نظام ويندوز، تُستخدم واجهة برمجة تطبيقات الملف الشخصي ( Profile API) لقراءة وكتابة الإعدادات من .iniملفات ويندوز التقليدية. على سبيل المثال، تسترجع الدالة GetPrivateProfileString سلسلة نصية من القسم المحدد في ملف التهيئة. (يُقارن الملف الشخصي "الخاص" بالملف الشخصي GetProfileStringالذي يسترجع البيانات من ملف WIN.INI ).
يوضح برنامج C النموذجي التالي كيفية قراءة قيم الخصائص من ملف INI النموذجي أعلاه (لنفترض أن اسم ملف التكوين هو dbsettings.ini):
#include <windows.h>int main ( int argc , TCHAR * argv []){TCHAR dbserver [ 1000 ];int dbport ;GetPrivateProfileString ( TEXT ( "database" ), TEXT ( "server" ), TEXT ( "127.0.0.1" ), dbserver , sizeof ( dbserver ) / sizeof ( dbserver [ 0 ]), TEXT ( ". \\ dbsettings.ini" ));dbport = GetPrivateProfileInt ( TEXT ( "database" ), TEXT ( "port" ), 143 , TEXT ( ". \\ dbsettings.ini" ));// ملاحظة: الدالة WritePrivateProfileInt() غير موجودة، فقط الدالة WritePrivateProfileString() موجودة.أرجع 0 ؛}المعامل الثالث للدالة GetPrivateProfileStringهو القيمة الافتراضية، وهي "127.0.0.1"على 143التوالي في استدعاءي الدالة أعلاه. إذا كانت القيمة المُمرَّرة لهذا المعامل هي NULL، فإن القيمة الافتراضية هي سلسلة نصية فارغة "".
في نظام يونكس، توجد العديد من مكتبات التكوين المختلفة للوصول إلى ملفات INI. وغالبًا ما تكون هذه المكتبات مضمنة بالفعل في أطر العمل ومجموعات الأدوات. ومن أمثلة محللات ملفات INI لنظام يونكس: GLib و iniparser و libconfini .
مقارنة بين محللات ملفات INI
| اسم | دعم الأقسام | دعم تداخل الأقسام | التعرف على دخول ذوي الاحتياجات الخاصة [ 24 ] | دعم متعدد الأسطر [ 25 ] | أنواع القيم | دعم القراءة/الكتابة | منصة | رخصة | لغة البرمجة | أحدث إصدار |
|---|---|---|---|---|---|---|---|---|---|---|
| محلل التكوين في بايثون [ 26 ] [ 27 ] | نعم | نعم | لا | غير قياسي [ 28 ] | منطقي ، رقمي ، نصي | القراءة والكتابة | *BSD ، لينكس ، ماك أو إس ، ويندوز | دوري كرة القدم الأسترالية للمحترفين | لغة C (للتنفيذ)، لغة بايثون (للاستخدام) | 3.9.7 [ 29 ] |
| GLib [ 30 ] | نعم | نعم | لا | لا | منطقي ، رقم ، سلسلة نصية ، مصفوفة | القراءة والكتابة | *BSD ، لينكس ، ماك أو إس ، ويندوز | إل جي بي إل | ج | 2.66.7 ( 11 فبراير 2021 ( 2021-02-11 ) ) [ ± ] [ 31 ] |
| inifile [ 33 ] | نعم | لا | لا | لا | منطقي ، رقمي ، نصي | القراءة والكتابة | *BSD ، لينكس ، ماك أو إس ، ويندوز | أباتشي | يذهب | 1.2.0 [ 34 ] |
| inih [ 35 ] | نعم | لا | لا | غير قياسي [ 36 ] | منطقي ، رقمي ، نصي | يقرأ | *BSD ، لينكس ، ماك أو إس ، ويندوز | بي إس دي | ج | 60 [ 37 ] |
| iniparser [ 38 ] | نعم | لا | لا | نعم | منطقي ، رقمي ، نصي | القراءة والكتابة | *BSD ، لينكس ، ماك أو إس ، ويندوز | معهد ماساتشوستس للتكنولوجيا | ج | 4.2.4 [ 39 ] |
جافا (عبر java.util.Properties) [ 40 ] | لا | لا | لا | نعم | خيط | القراءة والكتابة | مستقل عن المنصة | رخصة مزدوجة: رخصة جنو العمومية الإصدار 2 مع استثناء مسار الفئة، [ 41 ] ورخصة ملكية . [ 42 ] | لغة C (للتنفيذ)، لغة Java (للاستخدام) | 26.0.1 ( 21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] 25.0.3 LTS ( 21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] 21.0.11 LTS ( 21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] 17.0.19 LTS (21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] 11.0.31 LTS ( 21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] 8u491 LTS ( 21 أبريل 2026 ( 2026-04-21 ) [ 43 ] ) [ ± ] |
| libconfini [ 44 ] | نعم | نعم | نعم | نعم | منطقي ، رقم ، سلسلة نصية ، مصفوفة | يقرأ | *BSD ، لينكس ، ماك أو إس ، ويندوز | رخصة جنو العمومية | ج | 1.16.2 [ 45 ] |
PHP (عبر parse_ini_file()) [ 46 ] | نعم | نعم | نعم | لا | منطقي ، رقم ، نص ، فارغ | يقرأ | لينكس ، ماك أو إس ، ويندوز | رخصة PHP الإصدار 3.01 [ 47 ] | لغة C (للتنفيذ)، لغة PHP (للاستخدام) | 8.5.8 [ 48 ] ( 3 يوليو 2026 ( 3 يوليو 2026 ) ) |
| PyINI [ 49 ] | نعم | نعم (حتى قسمين) | نعم | نعم | منطقي ، رقم ، سلسلة نصية ، مصفوفة | القراءة والكتابة | مستقل عن المنصة | رخصة GPLv3 | بايثون | 2.1 [ 50 ] |
| python-ini [ 51 ] | نعم | لا | لا | نعم | منطقي ، رقم ، نص ، فارغ | القراءة والكتابة | مستقل عن المنصة | بي إس دي | بايثون | 1.1.0 |
| RudeConfig [ 52 ] | نعم | لا | لا | لا | منطقي ، رقمي ، نصي | القراءة والكتابة | لينكس ، ويندوز | رخصة جنو العمومية | لغة سي++ | تم إيقافها - آخر إصدار هو 5.0.5، من نوفمبر 2009 [ 53 ] |
| واجهة برمجة تطبيقات ويندوز | نعم | لا | لا | لا | رقم ، سلسلة نصية ، بنية | القراءة والكتابة (غير قابلة للتدمير) | ويندوز | ملكية خاصة | ج | 26H1 (10.0.28000.2525) ( 14 يوليو 2026 ( 2026-07-14 ) [ 54 ] ) [ ± ] 25H2 (10.0.26200.8894) ( 18 يوليو 2026 ( 2026-07-18 ) [ 55 ] ) [ ± ] |
| واين (تطبيق لواجهة برمجة تطبيقات ويندوز ) | نعم | لا | لا | لا | رقم ، سلسلة نصية ، بنية | القراءة والكتابة (غير قابلة للتدمير) | لينكس ، ماك أو إس ، ويندوز | إل جي بي إل | ج | 11.0 [ 56 ] 13 يناير 2026 ( 13 يناير 2026 ) |
| محلل تكوين Rust [ 57 ] | نعم | لا | لا | لا | منطقي ، رقمي ، نصي | القراءة والكتابة | *BSD ، لينكس ، ماك أو إس ، ويندوز | رخصة MIT أو رخصة LGPL الإصدار 3.0+ | الصدأ | 3.0.2 [ 57 ] (11 سبتمبر 2022) |
| java-ini-parser [ 58 ] | نعم | لا | نعم | نعم | منطقي ، رقمي ، نصي | القراءة والكتابة | مستقل عن المنصة | أباتشي | جافا | 1.4 [ 57 ] (29 ديسمبر 2022) |
| اسم | دعم الأقسام | دعم تداخل الأقسام | التعرف على دخول ذوي الاحتياجات الخاصة | دعم متعدد الأسطر | أنواع القيم | دعم القراءة/الكتابة | منصة | رخصة | لغة البرمجة | أحدث إصدار |
تعيين الملفات
تُنشئ عملية ربط ملفات التهيئة ربطًا بين ملف INI وسجل نظام ويندوز . [ 59 ] [ 60 ] وقد طُرحت هذه التقنية مع نظامي التشغيل ويندوز NT وويندوز 95 كوسيلة للانتقال من تخزين الإعدادات في ملفات .ini التقليدية إلى السجل الجديد. تقوم عملية ربط الملفات باعتراض استدعاءات واجهة برمجة تطبيقات الملف الشخصي، وباستخدام الإعدادات من قسم IniFileMapping في السجل، تُوجّه عمليات القراءة والكتابة إلى المواقع المناسبة في السجل.
باستخدام المثال أدناه، يمكن استدعاء دالة نصية لجلب مفتاح الاسم من قسم المالك في ملف إعدادات يُسمى، على سبيل المثال، dbsettings.ini . يجب أن تكون القيمة المُعادة هي السلسلة النصية "John Doe".
GetPrivateProfileString ( "owner" , "name" , ... , "c:\\programs\\oldprogram\\dbsettings.ini" );تأخذ عملية تعيين ملفات INI استدعاء واجهة برمجة تطبيقات الملف الشخصي هذا، وتتجاهل أي مسار في اسم الملف المحدد، وتتحقق مما إذا كان هناك مفتاح تسجيل يطابق اسم الملف ضمن الدليل:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
إذا وُجد هذا القسم، يبحث النظام عن اسم إدخال مطابق للقسم المطلوب. في حال العثور على إدخال، يستخدم نظام ربط ملفات INI قيمته كمؤشر إلى جزء آخر من سجل النظام. ثم يبحث عن إعداد INI المطلوب في ذلك الجزء من سجل النظام.
إذا لم يتم العثور على اسم إدخال مطابق وكان هناك إدخال تحت اسم الإدخال (الافتراضي) ، فسيتم استخدام هذا الإدخال بدلاً من ذلك في عملية تعيين ملفات INI. وبالتالي، لا يحتاج كل اسم قسم إلى إدخال خاص به.
| (تقصير) | @USR:Software\oldprogs\inisettings\all |
|---|---|
| قاعدة البيانات | USR:Software\oldprogs\inisettings\db |
لذا، في هذه الحالة، يتم توجيه استدعاء الملف الشخصي للقسم [owner]إلى:
| اسم | جون دو |
|---|---|
| منظمة | منتجات أكمي |
عند العثور على اسم إدخال سجل النظام " name " مطابقًا لمفتاح INI المطلوب، تُعاد قيمة "John Doe" إلى استدعاء الملف الشخصي. في هذه الحالة، تمنع علامة @ في بداية القيمة الافتراضية أي عمليات قراءة من ملف dbsettings.ini الموجود على القرص. ونتيجةً لذلك، لا يتم البحث عن أي إعدادات غير موجودة في سجل النظام في ملف INI.
لا يحتوي إدخال " قاعدة البيانات " في سجل النظام على البادئة @ في القيمة؛ وبالتالي، بالنسبة لهذا [database]القسم فقط ، يتم أخذ الإعدادات في سجل النظام أولاً متبوعة بالإعدادات الموجودة في ملف dbsettings.ini على القرص.
البدائل
ابتداءً من نظام التشغيل ويندوز 95 ، بدأت مايكروسوفت بالترويج بقوة لاستخدام سجل ويندوز بدلاً من ملفات INI. [ 61 ] عادةً ما تقتصر ملفات INI على مستويين (الأقسام والخصائص) ولا تتعامل مع البيانات الثنائية بكفاءة. مع ذلك، لم يسلم هذا القرار من الانتقادات، نظرًا لأن السجل متجانس، وغير شفاف، وثنائي، ويجب أن يكون متزامنًا مع نظام الملفات، ويمثل نقطة ضعف مركزية لنظام التشغيل. [ 62 ]
لاحقًا، أصبحت ملفات التكوين المستندة إلى لغة XML خيارًا شائعًا لترميز التكوين في ملفات نصية. تسمح لغة XML بمستويات وتداخلات معقدة كيفما تشاء، ولديها آليات قياسية لترميز البيانات الثنائية .
في الآونة الأخيرة، أصبحت تنسيقات تسلسل البيانات ، مثل JSON و TOML و YAML ، تُستخدم كتنسيقات تهيئة. يمكن لهذه التنسيقات الثلاثة البديلة أن تتداخل بشكل عشوائي، ولكن لها بنية مختلفة عن INI. من بينها، يُشبه TOML تنسيق INI إلى حد كبير، ولكن فكرة جعل TOML متوافقًا عمدًا مع مجموعة فرعية كبيرة من INI رُفضت. [ 63 ]
مع ذلك، تسمح أحدث برامج تحليل ملفات INI أيضًا بالتداخل العميق التعسفي مثل XML و JSON و TOML و YAML ، وتوفر دعمًا مكافئًا للقيم المكتوبة و Unicode ، على الرغم من أنها تحافظ على الوضع غير الرسمي لملفات INI من خلال السماح بصيغ متعددة للتعبير عن الشيء نفسه. [ 64 ]
انظر أيضاً
- BOOT.INI
- MSConfig
- Sysedit
- SYSTEM.INI
- TOML ، وهو تنسيق ملف تكوين مشابه جدًا ولكنه أكثر تحديدًا رسميًا
- ملف WIN.INI
- ملفات IFF الخاصة بجهاز Amiga
- .DS_Store
- .ملكيات
مراجع
- ↑ مايكروسوفت تك نت: تكوين عنصر ملف ini
- ↑ ملفات تهيئة .conf
- ↑ مايكروسوفت: مجموعة موارد محطة عمل ويندوز إن تي
- ↑ مايكروسوفت ليرن (2022-02-08). "كيفية تخصيص المجلدات باستخدام ملف Desktop.ini" . تم الاطلاع عليه بتاريخ 2024-01-10 .
- ↑ كودروت نياجو، "لماذا يوجد ملفان Desktop.ini على سطح المكتب الخاص بي وماذا يفعلان؟" .
- ↑ راسموس ليردورف، كيفن تاترو، بيتر ماكنتاير. "برمجة PHP" . الأقسام "parse_ini_file"، "Extension INI Entries"، إلخ.
- ↑ كريستيان وينز. "دليل عبارات PHP وMySQL" . قسم "تحليل ملفات INI". اقتباس: "... كان تنسيق ملف INI ... شائع الاستخدام في بيئة ويندوز، ولكنه اليوم يُستخدم أيضًا في تكوين منتجات برمجية مثل PHP. على سبيل المثال، ...
php.ini" - ↑ "ملف تكوين git-config" .
- ↑ "التنسيق الأساسي للملف" . Specifications.freedesktop.org .
- ↑ "systemd.service" . www.freedesktop.org .
- ↑ "afp.conf — ملف تكوين Netatalk" . تم استرجاعه بتاريخ 10-01-2024 .
- ↑ "pacman.conf(5)" . archlinux.org .
- ↑ "دليل التكوين السريع" . forgejo.org . تم الاطلاع عليه بتاريخ 12-03-2025 .
- ↑ "EditorConfig" . editorconfig.org .
- 1 2 3 دليل وظائف مكتبة libconfini
- ↑ وثائق أباتشي لـ org.apache.commons.configuration2.INIConfiguration ، مؤسسة برمجيات أباتشي
- ↑ يشمل ذلك تطبيق ويندوز. انظر "دالة GetPrivateProfileString" . شبكة مطوري مايكروسوفت . مايكروسوفت . تم الاسترجاع في 2 يونيو 2012 .
- ↑ مشروع Git. "config.txt" . تم الاسترجاع بتاريخ 10 يناير 2024 .
- ↑ مشروع Git. "config.txt" . تم الاسترجاع بتاريخ 10 يناير 2024 .
- ↑ مشروع Git. "config.txt" . تم الاسترجاع بتاريخ 10 يناير 2024 .
- ↑ تطبيق كلوانتو
- ↑ مشروع Git. "config.txt" . تم الاسترجاع بتاريخ 10 يناير 2024 .
- ↑ مشروع Git. "config.txt" . تم الاسترجاع بتاريخ 10 يناير 2024 .
- ↑ من الممارسات الشائعة بين مُنشئي ملفات INI "التعليق" على الإدخالات غير المرغوب فيها لتعطيلها، بدلاً من إزالتها تمامًا. انظر المفتاح
aفي المثال التالي:[قسم] إلى أ = أ ب = ب
- ↑ يشير التركيب القياسي لاستمرار السطر هنا إلى تسلسل الشرطة المائلة العكسية متبوعة بفاصل أسطر ، كما هو مُطبق بواسطة iniparser و libconfini و
java.util.Properties - ^ فريدريك لوند. "مكتبة بايثون القياسية" . 2001. قسم "وحدة ConfigParser". ص. 143
- ↑ "ConfigParser – محلل ملفات التكوين" .
- ↑ باتباع قواعد اللغة التي صُمم للعمل معها ( بايثون )، يتطلب ConfigParser مسافة بادئة أعمق في الأسطر التاليةلتمديد عقدة على عدة أسطر ، بدلاً من استخدام الشرطة المائلة العكسية + فاصل الأسطر الأكثر شيوعًا (انظر: configparser — محلل ملفات التكوين ).
- ↑ توثيق بايثون حسب الإصدار
- ↑ محلل ملفات GLib للقيم المفتاحية
- ↑ ويذنال، فيليب (11 فبراير 2021). "glib 2.66.7" . قائمة بريدية لإصدارات GNOME ftp . تم الاطلاع عليه بتاريخ 12 فبراير 2021 .
- ↑ الإصدارات · جنوم/غليب
- ↑ توثيق ملف inifile
- ↑ الإصدارات · inifile
- ↑ inih README
- ↑ باستخدام المسافة البادئة، باتباع نهج ConfigParser بشكل صريح (راجع وثائق المشروع لمزيد من المعلومات)
- ↑ الإصدارات · benhoyt/inih
- ↑ توثيق محلل ملفات iniparser
- ↑ الإصدارات · iniparser/iniparser
- ↑ الخصائص (منصة جافا SE 8)
- ↑ "OpenJDK: GPLv2 + استثناء مسار الفئة" . Openjdk.java.net. 1989-04-01 . تم الاطلاع عليه بتاريخ 2016-02-09 .
- ↑ "BCL For Java SE" . Oracle.com. 2013-04-02 . تم الاطلاع عليه بتاريخ 2016-02-09 .
- 1 2 3 4 5 6 "إصدارات مجموعة تطوير جافا" . Java.com . تم الاطلاع عليه بتاريخ 26-04-2026 .
- ↑ وثائق libconfini
- ↑ الإصدارات · madmurphy/libconfini
- ↑ PHP . " — تحليل ملف التكوين" . وثائق PHP الرسمية . تم الاطلاع عليه بتاريخ 19-07-2022 .
parse_ini_file() - ↑ رخصة PHP الإصدار 3.01
- ↑ "الإصدار 8.5.8" . 3 يوليو 2026. تم الاطلاع عليه في 4 يوليو 2026 .
- ↑ PyINI
- ↑ الوسوم · whoatemybutter / PyINI
- ↑ python-ini
- ↑ وثائق RudeConfig
- ↑ الإصدارات · RudeConfig
- ↑ "14 يوليو 2026 - KB5101649 (إصدار نظام التشغيل 28000.2525)" . دعم مايكروسوفت . مايكروسوفت .
- ↑ "18 يوليو 2026 - KB5121767 (إصدارات نظام التشغيل 26200.8894 و26100.8894) خارج النطاق" . دعم مايكروسوفت . مايكروسوفت .
- ↑ "إصدار Wine 11.0" . 13 يناير 2026. تم الاطلاع عليه بتاريخ 16 يناير 2026 .
- ١ ٢ ٣ "configparser على crates.io" . crates.io . ٢٠٢٢-١٢-١٢. مؤرشف من الأصل في ٢٠٢٢-١٢-١٢ . تم الاسترجاع في ٢٠٢٢-١٢-١٢ .
- ↑ صفحة جافا إيني محلل جيثب
- ↑ ملفات التهيئة والسجل ، مجموعة موارد محطة عمل ويندوز إن تي ، مايكروسوفت تك نت
- ↑ إدارة سجل نظام التشغيل NT ، إدارة سجل نظام التشغيل Windows NT ، بول روبيشو، دار نشر أورايلي ميديا
- ↑ سجل النظام
- ↑ هل كان سجل ويندوز فكرة جيدة؟ – رعب البرمجة
- ↑ "تعليق على مشكلة "التوافق مع ملفات .INI هدف جدير بالاهتمام" على GitHub" . GitHub .
- ↑ libconfini/README
- صندوق المعلومات – https://filext.com/file-extension/INI
- صندوق المعلومات – https://wikiext.com/ini
روابط خارجية
- دليل وظائف مكتبة libconfini : الصيغة المحددة المسموح بها بواسطة libconfini.
- تطبيق Cloanto لتنسيق ملف INI : الصيغة المحددة المسموح بها بواسطة محلل تم تنفيذه بواسطة Cloanto.
- برنامج تعليمي بسيط للغاية لتحليل ملفات البيانات : برنامج تحليل ملفات INI في Apache Groovy.
- دالتا GetPrivateProfileString() و WritePrivateProfileStringA() من مايكروسوفت
- ملفات التكوين
- تنسيقات ملفات الحاسوب
