Альтернативные потоки данных NTFS
сегодня я видел эту странную магическую поддержку системы NTFS: каждый файл может иметь несколько потоков данных. В основном можно иметь файл a.txt
размера 0b, но может быть любое количество байтов, скрытых в отдельном потоке данных для этого файла. Это строго связанная с NTFS магия, и я не вижу никакой благородной причины для наличия этих потоков. Вы можете искать потоки NTFS с помощью streams
утилиты от Sysinternals. Это покажет вам, что в основном каждый из этих неприятных thumbs.db
файлы поставляется с дополнительным потоком данных.
хорошо, теперь я видел эту магическую работу в системе Windows NT4, потоки, добавленные в файлы, скопированные, удаленные (с помощью вышеупомянутой утилиты), но теперь я пытаюсь это дома в моей системе Win XP, Но, хотя я могу обнаружить существующие потоки, я не могу отображать их содержимое, не могу создавать новые, или очень многое, когда я использую filename:streamname
синтаксис.
я получаю эту ошибку:
в имя файла, имя каталога или синтаксис метки тома неверно.
пример: Вывод из утилиты streams:
c:DOWNLOADS>streams.exe -s .
Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com
c:DOWNLOADS13.pdf:
:Zone.Identifier:$DATA 46
c:DOWNLOADS>type 1013.pdf:Zone.Identifier
The filename, directory name, or volume label syntax is incorrect.
почему я не могу отобразить содержимое альтернативного потока данных?
просмотр документации Microsoft на "как использовать NTFS альтернативные потоки данных" я вижу, что это относится к моей операционной системы, хотя они упоминают, что эти потоки не будут поддерживаться в будущем. Кто-нибудь может пролить свет на это?
6 ответов
С макушки моей головы:NTFS потоки данных были введены в Windows NT 4.0 и были вокруг всех потомков (за исключением потомков win-95: 98, Me). В XP, Vista и Win 7 они все еще вокруг. Пока версии Windows поддерживают NTFS, они будут поддерживать потоки файлов. Они будут поддерживать NTFS в течение длительного времени.
ошибка, которую вы имеете, описана на странице, которую вы показываете в своем вопросе. The type
команда не понимает потоки. Использовать:
more < 1013.pdf:Zone.Identifier
работа с потоками
Microsoft имеет только несколько команд, которые работают с потоками, на самом деле, только <
, >
работа с потоками, и поэтому могут использоваться только команды, которые могут работать с этими операторами перенаправления. Я написал пара сообщений в блоге на альтернативных потоках данных о том, как вы все еще можете управлять потоками только с помощью этих команд.
Streams будет работать только с программами, которые предназначены для работы с ними просто потому, что их нужно лечить специально (сравните точки соединения, также особенность 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, чтобы добраться до них. The использовать из них является связывание медиа-активов вместе с исполняемым файлом.
одна возможная цель для альтернативного потока: метаданные. Для документа можно добавить большое описание, не влияя на содержимое исходного файла.
Win32 API обрабатывает именование альтернативных потоков просто отлично.
CMD, с другой стороны, делает какой-то фанковый разбор имени файла, когда можно иметь */? расширение и рвота, когда присутствует":". Вот почему copy и type fail, но простое перенаправление работает.
ошибка буквально означает, что она не распознается как альтернативный поток данных, и ссылка, которую вы делаете, содержит определенный символ ,который не разрешен в имени пути (:
; другие символы не допускаются включают \
,/
и т. д.).
попробуй:
start this_is_a.txt:ads.exe