امروز کاملا اتفاقی متوجه شدم که ویندوز 10 به نام هایی مانند aux گیر میده و این گیر ربطی به پسوند فایل نداره. یعنی چه فایل aux.txt باشه و چه aux.png شما مجاز به استفاده از چنین نامی در ویندوز نیستید! کنجکاو شدم ببینم جریان چیه؟ پس تو اینترنت گشتم و جواب رو پیدا کردم.

ویندوز رسما اعلام کرده که نام های زیر ممنوع هستند:

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9

شما نمی توانید هیچ کدام از این نام ها را با هر پسوندی انتخاب کنید. این یعنی CON.txt و CON.png هر دو ممنوع هستند. علاوه بر این، حروف کوچک و بزرگ نیز تاثیری ندارند و انتخاب نام های con یا CON و یا CoN همگی ممنوع هستند. اما چرا؟

این اشتباه از سال 1974 تا الان وجود دارد! در واقع این اشتباه از فیلم جنگ ستارگان هم قدیمی تر است!

ریشه ی این مشکل به شعار UNIX که میگه همه چیز در یونیکس فایل است بر می گرده. در یونیکس تمام سخت افزار ها در آدرس /dev/ در دسترس است مثلا /dev/lp0 مربوط به اولین پرینتر و /dev/tty مربوط به ترمینال هست. در سال 1974 هم چنین چیزی به سیستم عامل CP/M وارد شد. این سیستم عامل برای سیستم‌هایی با حافظه بسیار کم و بدون هارد طراحی شده بود و از تعدادی دیسک برای ذخیره اطلاعات استفاده می شد. از آن جا که در آن زمان چیزی به نام آدرس یا پوشه (directory) نبود این فایل های خاص که مربوط به سخت‌افزار های متصل هستند همه جا قابل مشاهده بود.

پس زمانی که می خواستید یک فایل متنی را با پسوند txt ذخیره کنید می توانستید انتخاب کنید که فایل بر دیسک ذخیره شود یا با نام LPT1 ذخیره کنید تا پرینت گرفته شود. از آن جا که برنامه های مختلف برای ذخیره فایل ها از پسوند های مختلفی استفاده می‌کنند پس این سیستم‌عامل برای سازگاری بیشتر برای فایل‌های خاص از پسوند و یا بزرگی و کوچکی حروف صرف نظر می‌کرد.

پس از آن که سیستم‌عامل PC-DOS آمد سعی بر آن بود که امکانات کاربردی از CP/M منتقل شود. همینطور در سال 1983 زمانی که در نسخه 2.0 از سیستم‌عامل PC-DOS آدرس (Directory یا میشه گفت همان پوشه ها) اضافه شد نیز این قابلیت حفظ شد.اما مایکروسافت ترجیح داد که این فایل های خاص در همه جا دیده شود نه فقط در آدرس خاصی مثل آنچه در یونیکس بود. پس از آن ویندوز 95 هم براساس سیستم‌عامل DOS بوجود آمد.

با وجود این که هسته ویندوز‌های امروزی Windows NT، براساس سیستم عامل DOS نیست اما، مایکروسافت فکر کرد شاید بهتر باشه برای سازگاری با نرم افزار های قدیمی این امکان رو به Windows NT بیاره و این اشتباه نسل به نسل و سینه به سینه تا سال 2021 و در ویندوز 10 منتقل شده! شاید در زمان DOS و اجداد اون این مورد یک امکان مفید بود ولی وجودش در عصر حاضر به نظر لازم نیست. شاید امروزه وجود چنین چیزی یک اشتباه باشه و مایکروسافت حاضر نیست هسته ویندوز رو ویرایش کنه. الان نزدیک به پنجاه سال از این انتخاب میگذره و هنوز هم ما شاهد ممنوعیت استفاده از این نام ها هستیم.