محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

30 نام ممنوعه در ویندوز که نمی توانید استفاده کنید

شاید برای شما هم به عنوان یک ITPRO جالب باشد که بدانید در سیستم عامل ویندوز شما نمی توانید با یک سری اسامی خاص دایرکتوری درست کنید ، یعنی اجازه ایجاد فولدر یا دایرکتوری با این اسامی در سیستم عامل ویندوز ممنوع است ، بعضا از اساتیدی که در این حوزه فعالیت می کنند وقتی در این خصوص سئوال می شود پاسخ می دهند که این اسامی رزرو شده است ، این کاملا درست است اما شاید دلایل پنهانی هم داشته باشد ، ما به بررسی مختصر در خصوص این اسامی رزرو شده در این مطلب بسنده می کنیم ، در ابتدا بدانید که شما نمی توانید چنین اسامی که در زیر لیست شده اند را بر روی فولدرها و فایل های خود در ویندوز قرار بدهید :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  1. CON
  2. PRN
  3. AUX
  4. NUL
  5. COM1
  6. COM2
  7. COM3
  8. COM4
  9. COM5
  10. COM6
  11. COM7
  12. COM8
  13. COM9
  14. LPT1
  15. LPT2
  16. LPT3
  17. LPT4
  18. LPT5
  19. LPT6
  20. LPT7
  21. LPT8
  22. LPT9

جالب اینجاست که بعضا اگر حتی پسوند دیگری هم برای این فایل ها قرار بدهیم هم ممکن است سیستم عامل با آن به مشکل بخورد ، برای مثال شما اگر فایلی به شکل AUX.txt ایجاد کنید ویندوز ممکن است به شما خطا بدهد همانطور که در تصویر زیر مشاهده می کنید ، البته اکثر دوستان با دو کلمه NUL و CON تا حدودی بیشتر آشنایی دارند اما همانطور که در بالا مشاهده می کنید این اسامی زیاد هستند .

اگر بخواهیم بصورت بسیار بسیار خلاصه این مشکل را بررسی کنیم این ساختار نامگذاری از زمانیکه سیستم عامل DOS 1.0 توسط مایکروسافت معرفی شد این فایل ها بصورت رزرو شده در سیستم عامل قرار گرفتند و همچنان به دلیل Backward Compatibility یا هماهنگی با محصولات گذشته !! این دقیقا دلیلی هست که براش عنوان شده ! از این اسامی نمی توان در سیستم عامل های امروزی شرکت مایکروسافت هم استفاده کرد.

مشکل ایجاد کردن فایل با نام con
The specified device name is invalid

اما تاریخچه این اتفاق از کجا می آید ؟ در واقع زمانیکه شخصی به نام گری کیلدال دستوری به نام CP//M را برنامه نویسی کرد این دستور برای کپی کردن فایل ها با استفاده از ساختار device name و نه ساختار فایل استفاده می شد ، یعنی این دستور محتویات یک دستگاه ذخیره سازی را به یکباره کپی می کرد ، گری این برنامه را برای کپی کردن یکباره تجهیزاتی مثل فلاپی دیسک که در آن زمان پرکاربرد ترین نوع تجهیزات ذخیره سازی بود استفاده می کرد ، در نگارش این برنامه یک سری تعاریف به عنوان special files یا فایل های خاص وجود داشت که باعث می شد دستور به درستی کار کند ، این فایل های خاص به اسامی زیر در نرم افزار تعریف شده بودند :

  1. CON : ورودی و خروجی یا Console
  2. AUX : تجهیزات یا دستگاه های کمکی یا auxiliary برای مثلا PUN که پانچ و RDR که Reader بودند از نمونه های این دستگاه بودند
  3. LST : لیست دستگاه های خروجی که معمولا پرینترها بودند LIST
  4. PRN : مثل LST اما خطوط در اینگونه دستگاه ها شماره گذاری می شدند برای مثال 60 خط در هر صفحه چاپ می شد
  5. NUL : همیشه به معنی تهی یا خالی است ، یعنی دستگاهی وجود ندارد ، در لینوکس هر چیزی که در dev//nul قرار می گیرد
  6. EOF : مخفف End Of File است و به تجهیزاتی اشاره می کرد که کاراکترهای انتهای فایل را مشخص می کردند برای مثلا ASCII 0x1A
  7. INP : دستگاه ورودی دلخواهی بود که ما تعریف کرده بودیم و پیشفرض ورودی آن همانند EOF بود
  8. OUT : دستگاه خروجی دلخواهی بود که ما تعریف می کنیم و ورودی آن بصورت پیشفرض NUL بود

خوب شاید مفاهیم بالا کمی مبهم به نظر برسد اما آن زمان در DOS 1.0 این موارد تعریف شد و دیگر شما نمی توانستید با توجه به تعاریفی که در سیستم عامل وجود دارد از این موارد برای اسم فایل استفاده کنید ، جالب اینجاست که همچنان با توجه به ماهیت حفظ هماهنگی با محصولات گذشته مایکروسافت همچنان از این سیستم قدیمی پشتیبانی می کند. البته مایکروسافت نبود که این دستور را اختراع کرد و در واقع ابتدا در سیستم عامل های یونیکسی این دستور استفاده می شد تا اینکه در DOS از این مفاهیم کپی برداری شد ، در واقع دستور copy در DOS نیز همین مفاهیم را در بر دارد ، اگر دقت کرده باشید و به عمر شما قد بدهد در DOS برای پرینت یک فایل برای مثال فایل به شکل unity.txt prn: نمایش داده می شد و این یعنی همچنان ساختار قدیمی در این سیستم عامل پشتیبانی می شود.

با معرفی شدن ویندوز 95 توسط شرکت مایکروسافت که به خودی خود بر روی هسته DOS قرار گرفته بود همچنان ساختار نامگذاری و نگهداری فایل های خاص یا Special Files به همین شکل باقی ماند اما مشکل اینجا بود که به درستی در محیط گرافیکی این مقوله یکپارچه نشده بود.

یکی از باگ های معروفی که در آن زمان وجود داشت باگ معروف CON//CON بود که در IE بسیار مشخص و شناخته شده بود. با توجه به ماهیت پاک کردن صورت مسئله در سیستم عامل های مایکروسافتی ، مایکروسافت برای اینکه بتواند این مشکلات و باگ ها را کاهش بدهد و از بروز آنها جلوگیری کند بصورت اساسی از ایجاد کردن هرگونه فایل به نام فایل های خاص تعریف شده در سیستم عامل های خودش جلوگیری می کند تا مشکلی برای سیستم عامل پیش نیاید و اینجاست که فلسفه عدم توانایی ایجاد کردن نامهای مورد نظر نمایان می شود. در واقع مایکروسافت به Explorer ویندوز گفته است هرگاه دیدی که فایل یا فولدری می خواهد با این اسامی ایجاد شود .

به دلیل اینکه ممکن است یک باگ به وجود بیاد و سیستم عامل خراب شود حتما از اینکار جلوگیری کن و صورت مسئله را پاک کن. جالب اینجاست که هنوز در ویندوزهای جدید هم همین ساختار وجود دارد. اما هنوز ممکن است این سئوال پیش بیاید که چرا هنوز به این موارد مایکروسافت وابستگی دارد ؟ این را هنوز ما هم نمی دانیم !! نظرات شما شاید کمی ابهامات را برای ما برطرف کند.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات