بسیاری از کاربران ویندوز تجربه‌ای مشابه داشته‌اند: کلیک راست، ساخت پوشه جدید، تایپ کردن نام CON و سپس مواجهه با پیام خطا. سیستم‌عامل بدون توضیح اضافه اجازه نمی‌دهد چنین پوشه یا فایلی ایجاد شود. در نگاه اول به نظر می‌رسد این یک محدودیت بی‌دلیل یا حتی یک باگ قدیمی است، اما پشت این خطای ساده، داستانی چند دهه‌ای از تاریخ سیستم‌عامل‌های مایکروسافت نهفته است.

برخلاف تصور رایج، این رفتار هیچ ارتباطی به فایل‌سیستم مدرن NTFS یا قابلیت‌های امنیتی جدید ویندوز ندارد. پاسخ را باید در دوران سیستم‌عامل DOS و نحوه ارتباط نرم‌افزارها با سخت‌افزار جست‌وجو کرد؛ دورانی که نام‌هایی مانند CON معنایی کاملاً متفاوت داشتند.

CON به چه معنا بود؟

در معماری DOS، برخی نام‌ها هرگز به عنوان نام فایل عادی در نظر گرفته نمی‌شدند، بلکه به عنوان «نام دستگاه» (Device Name) شناخته می‌شدند. CON مخفف Console بود و به دستگاه کنسول اشاره داشت؛ یعنی ترکیب صفحه‌کلید برای ورودی و نمایشگر برای خروجی. وقتی برنامه‌ای در آن زمان می‌خواست چیزی را روی صفحه نمایش دهد یا از کاربر ورودی بگیرد، با دستگاه CON صحبت می‌کرد.

ویندوز به عنوان وارث DOS، برای حفظ سازگاری با هزاران برنامه قدیمی، این نام‌های رزروشده را در فضای نام Win32 حفظ کرد. به همین دلیل وقتی شما امروز در File Explorer تلاش می‌کنید پوشه‌ای به نام CON بسازید، توابع استاندارد Win32 آن را به عنوان درخواست دسترسی به دستگاه کنسول تفسیر می‌کنند، نه ایجاد یک پوشه واقعی، و در نتیجه درخواست شما را رد می‌کنند.

فهرست نام‌های ممنوعه فقط CON نیست

این محدودیت تنها به CON خلاصه نمی‌شود. مایکروسافت در مستندات رسمی خود فهرستی از نام‌های رزروشده را منتشر کرده که همگی ریشه در همین منطق دارند:

  • CON: دستگاه کنسول (ورودی/خروجی اصلی)
  • PRN: دستگاه چاپگر پیش‌فرض
  • AUX: دستگاه کمکی (معمولاً پورت سریال اول)
  • NUL: دستگاه پوچ؛ هر داده‌ای که به آن فرستاده شود ناپدید می‌شود
  • COM1 تا COM9: پورت‌های سریال
  • LPT1 تا LPT9: پورت‌های موازی چاپگر

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

داخل خبر (468x60)

محدودیت ویندوز است، نه NTFS

یکی از ابهامات رایج این است که آیا فایل‌سیستم NTFS مقصر این محدودیت است یا خیر. پاسخ مایکروسافت صریح است: NTFS به خودی خود هیچ مشکلی با این نام‌ها ندارد. این محدودیت در لایه Win32 اعمال می‌شود، یعنی همان رابطی که اکثر برنامه‌ها و خود File Explorer برای ساخت و مدیریت فایل‌ها از آن استفاده می‌کنند.

به همین دلیل، ابزارهایی که بتوانند مستقیماً و بدون واسطه Win32 با هسته NTFS صحبت کنند، در تئوری قادر به ایجاد چنین فایل‌هایی هستند. برای مثال، استفاده از پیشوند ویژه \\?\ در مسیر فایل که باعث می‌شود بررسی‌های فضای نام Win32 دور زده شود، یکی از روش‌های شناخته‌شده برای دسترسی یا حذف فایل‌هایی با نام‌های رزروشده است. البته این روش‌ها برای کاربر عادی توصیه نمی‌شوند و صرفاً نشان می‌دهند که محدودیت در کجا اعمال می‌شود.

چرا مایکروسافت این میراث را پاک نمی‌کند؟

این سوال منطقی مطرح می‌شود که چرا مایکروسافت با وجود گذشت بیش از چهار دهه از عصر DOS، همچنان این اسامی را مسدود نگه داشته است. پاسخ در یک کلمه خلاصه می‌شود: سازگاری با گذشته (Backward Compatibility).

میلیون‌ها خط کد، اسکریپت، نرم‌افزار سازمانی و ابزار قدیمی هنوز به این قرارداد متکی هستند. اگر ویندوز ناگهان اجازه دهد یک پوشه واقعی به نام CON ساخته شود، برنامه‌ای که انتظار دارد با نوشتن در CON خروجی را روی کنسول نمایش دهد، ممکن است به جای آن داده‌های خود را در یک پوشه بنویسد و دچار اختلال جدی شود. برای شرکتی که پایداری اکوسیستم نرم‌افزاری‌اش مهم‌ترین برگ برنده‌اش محسوب می‌شود، حفظ این رفتار قدیمی کم‌هزینه‌تر از بازنویسی منطق هزاران برنامه وابسته است.

بنابراین دفعه بعد که ویندوز مانع ساخت پوشه CON شد، آن را به عنوان یک یادگار تاریخی ببینید؛ یادگاری از زمانی که کنسول، چاپگر و پورت‌های سریال با همین نام‌های ساده مخاطب قرار می‌گرفتند و ویندوز امروز برای اینکه گذشته را فراموش نکند، همچنان به آن‌ها احترام می‌گذارد.