Запрещенные имена папок windows

Запрещенные имена папок в Windows и как можно создать запрещенную папку?

Всем привет! Немногие знают о том, что в Windows у можно называть совершенно не любыми способами. И это я говорю не про знаки, а именно имена. Еще, к тому же я расскажу, как можно создать папку с таким именем и чем это грозит.

Что такое запрещенные имена папок Windows?

Сперва нам необходимо разобраться, почему нельзя называть папки и файлы некоторыми именами.

Есть мнения, что это было личное мнение Билла Гейтса, когда он создавал свою первую систему — MS-DOS. Но все намного проще! На самом же деле это имена, которыми называются устройства ввода-вывода (микрофоны, динамики и т.д.).

Какие имена запрещены для называния папок в Windows?

Далее необходимо узнать, какими именами нельзя создавать папки в Windows.

Внимание! Все эти названия относятся только к системам, которые относятся к семейству Windows!

Список запрещенных имен:

Если вы зайдете в диспетчер задач вашего компьютера, то вполне можете увидеть хотя-бы одно из данных названий. Это и есть названные ими устройства.

Как можно создать папку с запрещенным названием?

Еще раз повторю, что стандартными способами вы не сможете создать папку с каким-либо из этих названий.

Но при этом есть способ создания запрещенной папки через консольную утилиту «mkdir». Для этого войдите в командную строку под администратором и введите следующую команду:

Где «***» — это запрещенное имя папки.

Но при этом стандартно вы не сможете удалить данную папку, только лишь через консоль (командную строку или оболочку PowerShell.

Но, стоит ли оно того?

А вот сейчас нужно задуматься, а стоит ли оно того, чтобы создавать папку с данным именем. Конечно, хорошо, что незнающий человек не сможет ее удалить. Но при этом есть и другие минусы:

  • Вы не сможете подключить к компьютеру устройства, которые определяются только через такие входы.
  • Возможны сбои в системе, может дойти до «синего экрана смерти» (BSOD).
  • Возможны ошибки при загрузке системы и запуске некоторых приложений.
  • Удаление может зависнуть или удалить поддержку данных устройств, что грозит переустановкой системы (восстановление может уже не спасти).

Вывод: Если посмотреть на минусы данного способа, то лучше им не пользоваться, ведь возможно полностью загубить систему. И это хорошо, если вы умеете ее переустанавливать.

Как нельзя называть папки в Windows и почему?

В операционной системе «Виндовс» обычному пользователю сложно будет при создании новой папки дать ей определенные имена, потому что они запрещены. Мы рассмотрим подробнее, как нельзя называть папки в Windows и почему.

Какие названия для папок запрещены в «Виндовс»

В операционной системе нельзя создавать папки с именами CON, PRN, NUL и так далее. Данный запрет связан с тем, что такие имена каталогов зарезервированы для использования в определенных системных задачах и процессах. Конечно, при особом желании вы можете сделать папку с зарезервированным в «Виндовс» именем, используя командную строку или код пробела. Полный же список того, как нельзя называть папки в Windows, выглядит следующим образом:

  • CON;
  • PRN;
  • AUX;
  • NUL;
  • COM с цифрой в конце от 0 до 9;
  • LPT с цифрой в конце от 0 до 9.

Также у вас не получится создать папку или файл, в имени которого будут содержаться один или несколько таких символов, как знаки меньше и больше (>, некоторых все-таки получается сделать такую директорию, несмотря на то, что так нельзя называть папки в Windows.

Как дать каталогу зарезервированное имя

Хотя назвать папку CON или PRN в операционной системе «Виндовс» напрямую весьма затруднительно, есть два обходных пути:

  1. Использовать пробел.
  2. Прибегнуть к помощи командной строки.

Рассмотрим каждый из путей немного подробнее.

Система не допускает того, чтобы имя файла или папки содержало только пробел или заканчивалось пробелом. Но вы можете использовать комбинацию клавиш alt и 255 для создания невидимого символа перед названием con или prn.

Читайте также:  Runas с паролем windows 10

Чтобы дать зарезервированное имя каталогу вторым путем, запускаем командную строку, где набираем, например, md \\.\c:\aux. Поздравляем, папка с именем «AUX» появится на вашем диске С. Вы сможете ее просмотреть в проводнике, но не сможете удалить. Для удаления директории вам придется прибегнуть вновь к командной строке, где надо прописать следующее: rd \\.\c:\aux. Специалисты не советуют создавать папки с зарезервированными в системе именами, так как вы не получите от этого практически никакого толка. Возможно, вы сможете удивить своих товарищей или девушку в познаниях информационных технологий, но не более того.

Далее подробно разберемся, почему папку нельзя назвать CON или другим зарезервированным в системе именем.

Почему не стоит давать директориям имена Con, Prn, Aux, Com1 и так далее

Выше приводился полный список имен, которые нельзя давать папкам и именам. Причина того, почему так нельзя называть папки в Windows, как правило, заключается в том, что эти ключевые слова зарезервированы еще со времен MS-DOS. Например, имя CON не стоит давать папке или файлу, так как это сокращение от console — консоль для ввода данных. Оно предназначено для внутренней команды операционной системы, вызывающей на экран компьютера консоль. Хотя многие ресурсы во Всемирной сети утверждают, что это было прозвище Билла Гейтса, которое он сильно невзлюбил в молодости.

По такому же принципу были зарезервированы и другие имена: prn — сокращенное обозначение принтера, aux — системного динамика, COM и LPT — последовательного и параллельного портов.

Итак, теперь вы знаете, как нельзя называть папки в Windows и почему.

Обход ограничений FAT32/NTFS

Статья написана для журнала «Хакер» в 2004 году. Она вышла в номере 02/04 (62).

Во времена операционной системы MS-DOS и файловой системы FAT16 существовали серьезные ограничения, касающиеся имен файлов. Так, максимальная длина имени файла составляла 8 символов, а расширения – 3 символа. С появлением Windows 95, максимальная длина имени файла увеличилась до 255 символов, и теперь нам чаще всего не приходится гадать, что скрывается в файле с названием MIAF9D

1.ZIP. В новых файловых системах FAT32 и NTFS с тех времен остались другие, менее заметные ограничения, которые можно обходить и использовать в своих целях.

Запрещенные символы

Правила, касающиеся имен файлов, содержатся в так называемых «Соглашениях об именах файлов» (Filename Conventions). В этом документе описано, какие символы допустимо использовать в названиях файлов, какие символы являются разделителями пути, максимальная длина пути, и т.п. Здесь же оговариваются и ограничения. К примеру, символы “\”, “/”, “?”, “|”, “*”, “ ” и “:” имеют специальное значение в Windows при операциях с файлами, в частности, из командной строки, и поэтому не могут быть использованы в имени отдельного файла. Это ограничение, по-видимому, обойти невозможно, так как при обращении к системным функциям для работы с файлами Windows стопроцентно выделяет их среди других символов и по-своему интерпретирует. Здесь нужно обратить внимание на специфическое использование символов точки «.», двоеточия «:», и пробела. Символ пробела может встречаться в имени файла или каталога, точка используется как разделитель имени файла от расширения, а двоеточие – как разделитель между буквой диска и остальной частью пути. Использование двоеточия не допускается нигде, кроме как после буквы диска, с исключением для файловой системы NTFS, где двоеточие используется еще и в качестве разделителя между нормальным именем файла и прикрепленными к нему файловыми потоками. Точка и пробел могут стоять в любом месте в имени файла, но не могут быть завершающими символами. Это странное, на первый взгляд, ограничение существует, как объясняет Microsoft, ради совместимости новых файловых систем со старыми, такими как HPFS, используемой в OS/2 и FAT16. Я думаю, что это ограничение частично связано с двумя существующими во всех используемых в Windows файловых системах виртуальными файловыми объектами (так называемые «точки»). При работе с файловыми менеджерами типа TotalCMD, для перехода в предыдущую папку надо щелкать по каталогу с названием «..». В файловых системах так обозначается родительский каталог относительно текущего пути, а текущая папка обозначается как «.». Строго говоря, эти объекты не являются настоящими файлами или каталогами. Это просто абстрактные объекты, используемые по традиции для навигации между папками. В Windows Explorer они вообще не показываются. Так как пользователь может создавать файлы, имена которых начинаются с точки (но не в Windows Explorer), то Microsoft заблокировала возможность ставить точки в конце названия, чтобы было невозможно создать файл «..». Чем мелкомягких не устраивают пробелы в конце названия, мне не понятно.

Читайте также:  Настройка групп пользователей linux

Имена DOS-устройств

В каждой Windows системе существует эмуляция MS-DOS, и этот факт тоже накладывает свои ограничения. При работе в командной строке используются псевдонимы для устройств, работа с которыми ничем не отличается от работы с обычными файлами. Под устройства зарезервированы следующие имена файлов: AUX, CON, NUL, PRN, COM1-COM9 и LPT1-LPT9. Простейший пример работы с этими объектами: если в командной строке ввести «dir > prn | sort», то отсортированный список файлов и каталогов текущей папки начнет распечатываться из принтера. Здесь «prn» означает принтер. Понятно, что если бы существовала возможность называть файлы зарезервированными именами устройств, то возникла бы путаница, поэтому эта возможность заблокирована.

Способы обхода ограничений

Мне известно три способа обхода описанных ограничений. Общий принцип их действия таков: определенным образом составляется название файла, после чего оно передается какой-либо системной функции для работы с файлами. В результате этого алгоритм проверки параметра на корректность не срабатывает, и мы получаем нужный результат — файл или каталог с некорректным с точки зрения системы названием. Какие это открывает возможности, я опишу позже. А пока поговорим о самих способах. Некоторые способы можно использовать не только программно, но и на пользовательском уровне. Способ первый: Использование UNC-путей. Это, на мой взгляд, самый простой и удобный способ. Разберем его на примере создания файла с точкой в конце названия. При его создании мы будем использовать стандартные функции для работы с файлами, но при этом мы будем указывать полный путь до объекта, и добавлять в начале пути четыре символа «\\?\» или «\\.\». Получится примерно следующее: «\\?\f:\test\prn». Дальше работаем с файлом как обычно, то есть мы можем писать в него, читать из него, копировать, удалять и делать все остальное, используя обычные функции. Надо только не забывать, что везде, где требуется имя файла, необходимо указывать полный путь с UNC-префиксом.

Тестирование показало, что использование префикса «\\?\» более надежно, чем «\\.\». При использовании второго префикса, к примеру, можно потерпеть неудачу при попытке удаления файла. Этот способ еще хорош тем, что работает и в командной строке. Действительно, возможны манипуляции с файлами прямо из командной строки, не прибегая к каким либо языкам программирования. Набранная в командной строке команда «type \\?\f:\test\prn» отобразит содержимое созданного файла. Пример создания файла

и записи в него информации смотри в листинге 1. Способ второй: Подстановка символов . Тоже довольно удобный способ, который позволяет работать с файлами/папками любыми обычными средствами, а затем просто поменять название файла на какое-либо другое, некорректное. Этот способ реализовывается так: Если при использовании функций MoveFile, CopyFile, MkDir, RmDir и некоторых других подставить в конец нового названия файла или каталога два символа «.\», то файл создастся с любым нужным нам именем.

Этот способ тоже можно использовать в командной строке, но только с каталогами. Если набрать в ней строку то появится каталог, имя которого будет . При использовании этого способа в своих программах надо перед передачей параметра, содержащего путь к новому файлу или папке, добавить в его конец эти два символа. При использовании этого способа с функциями CopyFile и MoveFile два символа добавляются ко второму параметру функции. Использование способа в программе иллюстрирует листинг 2. Способ третий: Использование файловых потоков. Наименее удобный способ, так как годится только для создания файлов, и работает только на NT-системах с NTFS. Но, для полноты картины, я должен был упомянуть и его. Смысл способа в том, что мы создаем файл с прикрепленным к нему потоком, используя синтаксис, принятый при работе с файловыми потоками. Согласно Q115827 из Microsoft Knowledge Base, функция CreateFile проверяет последний символ переданного ей параметра, содержащего путь к файлу, и удаляет этот символ, если он является пробелом или точкой. В данном случае, последний символ этого параметра является последним символом не имени создаваемого файла, а названия потока. В этом и состоит хитрость — при таком подходе мы можем задать любое имя файла, в том числе и зарезервированное за DOS-устройством, а система будет не замечать этого. Посмотри на листинг 3. Для разнообразия создадим файл с именем, оканчивающимся на пробел. Созданный файл будет содержать прикрепленный файловый поток, который в принципе нам не был нужен, ведь наша цель была получить файл с зарезервированным именем. Недостатки этого способа в том, что перед его использованием в программе, нужно обязательно проверять, какая файловая система используется на конкретном диске.

Читайте также:  Usb monitor windows 10

А что мне с этого?

Создай файл или каталог с некорректным именем, используя любой из вышеописанных способов. Теперь попробуй сделать с ним то, что каждый день делаешь с другими файлами и каталогами. Попробуй скопировать файл, переместить его, переименовать, открыть его любой программой, удалить, наконец.

Ну что, получилось что-нибудь? Вряд ли, потому что при попытке доступа к файлу система использует те же самые функции, которые используем мы, но, в отличие от нас, система не знает наших хитрых способов, и поэтому получается так, что система фактически блокирует сама себя. Ну как, может сам догадаешься, какие возможности это предлагает? Первое что приходит в голову — это блокировка доступа к секретной информации. Конечно, это не так надежно, как шифрование, но что мешает тебе зашифровать какой либо файл, и, для верности, еще и закрыть к нему доступ, задав некорректное имя. Кроме того, мало кто сможет скопировать такой файл, что бы подобрать позже пароль в спокойной обстановке. Есть возможность вообще спрятать файл так, что его не будет видно. Способ работает только с файловыми системами FAT\FAT32. Если переименовать существующий файл, содержащий информацию, задав ему имя , то файл перестает быть видимым в Проводнике. Соответственно найти невидимый файл будет довольно сложно. Файл можно увидеть только из командной строки, или в файловых менеджерах. Однако если файл создать в корневом каталоге диска, то файловые менеджеры его тоже не видят. Еще один возможный трюк: создается папка с таким же именем, и тоже невидимая. Суть в том, что в этой папке, используя способ №1 можно создавать файлы! В эту папку можно сохранять какие либо файлы, а чтобы получить к ним доступ, нужно как минимум знать их имена. Средствами Windows получить список файлов из этой папки невозможно, и получается защита не хуже архива с паролем!

Другое возможное использование — в западлостроении. Ничто не мешает нам создать на компе ламера некоторое количество файлов, размером по 4Гб каждый (если у ламера FAT32), или один большой файл любого размера (если NTFS), и переименовать их, ну, например, в имена DOS-устройств. Или можно сделать их невидимыми. В любом случае, эти файлы удаляются неочевидным способом, и поэтому большинству людей, скорее всего, придется форматировать винт и переустанавливать систему (если винт содержит только один раздел). Кстати, scandisk и другие подобные утилиты, почему-то не видят ничего странного в файлах с такими названиями. Наверное, каждый программист хоть раз в жизни пробовал писать вирус или троян. Естественно, чтобы вирус был настоящим вирусом, нужно намертво закрепить его в системе, а так же принять меры к тому, чтобы его как можно дольше не обнаружил антивирус. Я попытался использовать некорректные имена файлов в этих целях. Я создал на винте новую папку и поместил в него файл, содержащий тестовый вирус EICAR. Это вирус не приносит никакого вреда, и создан специально для тестирования антивирусов. Затем я просканировал папку с помощью Norton Antivirus. NAV правильно определил вирус и предложил отправить его в карантин. Я отказался, а вместо этого сделал вот что: я переименовал файл в и просканировал папку заново. На этот раз NAV показал, что каталог чист. Затем я проделал тоже самое, но на томе с NTFS и вирус переименовал в . Результаты были аналогичными. Этот несложный опыт показал, что метод может найти применение и в сфере создания вирусов. Когда я изучал эту тему, я написал себе небольшую прогу, позволяющую быстро создавать и удалять файлы и каталоги с некорректными именами. Специально для нее я написал модуль на Дельфях, в котором реализовал наиболее часто используемые мной функции для работы с файлами, приспособив их для работы с некорректными именами файлов. Если ты не хочешь сам возиться с реализацией описанных способов, то можешь взять прогу с Xakep-CD, или скачать ее с инета, и использовать этот модуль в собственных разработках. Я думаю, что описанные мной способы не единственные из возможных, и если ты поэкспериментируешь с разными функциями для работы с файлами, то ты можешь найти какие то свои новые способы. Так что удачных экспериментов!

Оцените статью