Вопрос

Сегодня я увидел эту странную волшебную систему NTFS, которая поддерживает:каждый файл может иметь несколько потоков данных.В принципе, можно было бы иметь файл a.txt размером 0b, но в отдельном потоке данных для этого файла может быть скрыто любое количество байтов.Это магия, связанная исключительно с NTFS, и я не вижу какой-либо благородной причины для использования этих потоков.Вы можете искать потоки NTFS с помощью streams утилита от Sysinternals.Это покажет вам, что практически каждый из этих отвратительных thumbs.db files поставляется с дополнительным потоком данных.

Хорошо, теперь я видел, как эта магия работает в системе Windows NT4, потоки добавляются в файлы, копируются, удаляются (с помощью вышеупомянутой утилиты), но сейчас я пробую это дома в своей системе Win XP, но хотя Я могу обнаруживать существующие потоки, не могу отображать их содержимое, не могу создавать новые и многое другое, когда использую filename:streamname синтаксис.

Я получаю эту ошибку:

Имя файла, имя каталога или синтаксис метки тома неверен.

Пример:Вывод утилиты потоков:

c:\DOWNLOADS>streams.exe -s .

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\DOWNLOADS\1013.pdf:
   :Zone.Identifier:$DATA       46

c:\DOWNLOADS>type 1013.pdf:Zone.Identifier
The filename, directory name, or volume label syntax is incorrect.

Почему я не могу отобразить содержимое альтернативного потока данных?

Глядя на документацию Microsoft по "Как использовать альтернативные потоки данных NTFS", я вижу, что это относится к моей операционной системе, хотя они упоминают, что эти потоки не будут поддерживаться в будущем.Кто-нибудь может пролить свет на это?

Это было полезно?

Решение

Из головы: Потоки данных NTFS были представлены в Windows NT 4.0 и присутствовали во всех потомках (за исключением потомков Win-95:98, Я).В XP, Vista и Win 7 они все еще присутствуют.Пока версии Windows поддерживают NTFS, они будут поддерживать файловые потоки.Они будут поддерживать NTFS еще долгое время.

Ваша ошибка описана на странице, которую вы показываете в своем вопросе.В type команда не понимает потоки.Использовать:

more < 1013.pdf:Zone.Identifier

Работа с потоками

У Microsoft есть лишь несколько команд, которые работают с потоками, фактически только <, > работать с потоками, поэтому можно использовать только те команды, которые могут работать с этими операторами перенаправления.Я написал пара сообщений в блоге об альтернативных потоках данных о том, как можно манипулировать потоками только с помощью этих команд.

Потоки будут работать только с программами, предназначенными для работы с ними, просто потому, что к ним нужно относиться особым образом (ср. точки соединения, тоже особенность NTFS, но драйвер скрывает детали и программам не нужно ничего особенного делать):они просто считают точку соединения настоящим файлом).

Когда вы пытаетесь открыть поток файлов с помощью start filename:streamname и программа говорит что-то вроде «недопустимое имя файла» или «файл не найден», и вы уверены, что имя потока правильное, то вполне вероятно, что программа не поддерживает потоки.Я заметил, что Блокнот, Wordpad и Word/Excel корректно работают с потоками, хотя Word и Excel считают файлы опасными.Вот некоторые эксперименты вы можете попробовать.


ПРИМЕЧАНИЕ:Кажется, вы считаете альтернативные потоки данных странными.Они странные, потому что они настолько скрыты, но они есть во многих основных файловых системах (HFS, NSS), и эта концепция восходит к началу 80-х годов.Фактически, изначально потоки были добавлены в NTFS для совместимости с другими файловыми системами.

Другие советы

Кстати, вы можете открыть AltDataStream с помощью блокнота:

notepad.exe 1013.pdf:Zone.Identifier

Также вы можете указать тип AltDataStream (не только в Блокноте, это «полное имя потока»):

1013.pdf:Zone.Identifier:$DATA

Это строго связанная с NTFS магия.

Это не так – в Mac OS они есть с тех пор, они называются вилки в этом мире, и вы бы использовали ResEdit, чтобы добраться до них.В классическое использование из них — объединение медиа-ресурсов вместе с исполняемым файлом.

Одна из возможных целей альтернативного потока:метаданные.К документу можно добавить большое описание, не затрагивая содержимое исходного файла.

Win32 API прекрасно справляется с именованием альтернативных потоков.

CMD, с другой стороны, выполняет необычный анализ имени файла, когда возможно наличие */?расширение и блевать, когда присутствует ":".Вот почему копирование и ввод не работают, но простое перенаправление работает.

Ошибка буквально означает, что он не распознается как альтернативный поток данных, а ссылка, которую вы создаете, содержит определенный символ, который не разрешен в имени пути ( :;другие символы, которые не разрешены, включают \\,/, и т. д).

Пытаться:

start this_is_a.txt:ads.exe

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top