Всем привет. Есть такая проблема: нужно просмотреть атрибуты нтфс, такие как
$STANDARD_INFORMATION,
$ATTRIBUTE_LIST,
$FILE_NAME ну и т.д.
DWORD dwAttrs=GetFileAttributesEx(pzFileName, GetFileExInfoStandard, &fData.dwFileAttributes);
if (fData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)
{
strcat(szMessage, "FILE_ATTRIBUTE_READONLY\r\n");
}
так читаются только обычные атрибуты, а как прочитать вышеуказанные? в инете по этому поводу ничго не могу найти
помогите плиз =)
Здравствуйте, Snakis, Вы писали:
S>Всем привет. Есть такая проблема: нужно просмотреть атрибуты нтфс, такие как S>$STANDARD_INFORMATION, S>$ATTRIBUTE_LIST, S>$FILE_NAME ну и т.д.
S>DWORD dwAttrs=GetFileAttributesEx(pzFileName, GetFileExInfoStandard, &fData.dwFileAttributes); S>if (fData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) S>{ S> strcat(szMessage, "FILE_ATTRIBUTE_READONLY\r\n"); S>} S>так читаются только обычные атрибуты, а как прочитать вышеуказанные? в инете по этому поводу ничго не могу найти S>помогите плиз =)
Здравствуйте, Snakis, Вы писали:
S>что, совсем никто? =(
Давайте я попробую. Только нужна более точная формулировка задачи. Допустим, атрибуты получены. Что потом с ними делать, на экран вывести? Имя файла как задаётся? И т.п.
Здравствуйте, Voinov, Вы писали:
V>Здравствуйте, Snakis, Вы писали:
S>>что, совсем никто? =(
V>Давайте я попробую. Только нужна более точная формулировка задачи. Допустим, атрибуты получены. Что потом с ними делать, на экран вывести? Имя файла как задаётся? И т.п.
получить атрибуты и вывести их на экран.
по заданию не сказано как именно задать имя файла
S>Всем привет. Есть такая проблема: нужно просмотреть атрибуты нтфс, такие как S>$STANDARD_INFORMATION, S>$ATTRIBUTE_LIST, S>$FILE_NAME ну и т.д.
S>помогите плиз =)
Облегченный вариант fsutil скомпиленный для windows (тестировалось только под Linux):
Здравствуйте, MShura, Вы писали:
S>>Всем привет. Есть такая проблема: нужно просмотреть атрибуты нтфс, такие как S>>$STANDARD_INFORMATION, S>>$ATTRIBUTE_LIST, S>>$FILE_NAME ну и т.д.
S>>помогите плиз =)
MS>Облегченный вариант fsutil скомпиленный для windows (тестировалось только под Linux):
MS>http://files.rsdn.ru/24534/fsutil.rar
MS>Пример MS>fsutil.exe streams query x:/tst_file — выводит список аттрибутов(потоков) MS>fsutil.exe streams dump x:/tst_file 10 — выводит dump аттрибута с типом 0x10
MS>Слэши в пути прямые
Здравствуйте, Snakis, Вы писали:
S>Здравствуйте, Voinov, Вы писали:
V>>Здравствуйте, Snakis, Вы писали:
S>>>что, совсем никто? =(
V>>Давайте я попробую. Только нужна более точная формулировка задачи. Допустим, атрибуты получены. Что потом с ними делать, на экран вывести? Имя файла как задаётся? И т.п.
S>получить атрибуты и вывести их на экран. S>по заданию не сказано как именно задать имя файла
http://files.rsdn.ru/19123/NTFSAttrib.zip
Печатает в стандартный вывод все атрибуты для указанного файла (включая шестнадцатеричный дамп и расшифровку). Имя файла задаётся с командной строки. Значения нерезидентных атрибутов не печатаются.
Здравствуйте, MShura, Вы писали:
V>>Значения нерезидентных атрибутов не печатаются. MS>А печаются ли значения резидентных аттрибутов, находящихся не в главной записи?
Что имеется в виду под "не главной" записью? Я получаю запись для файла вызовом DeviceIoControl с кодом FSCTL_GET_NTFS_FILE_RECORD. Всё, что она возвращает, я печатаю. Нерезидентные атрибуты нужно считывать непосредственно с диска, что делать мне было лень
V>>>Значения нерезидентных атрибутов не печатаются. MS>>А печаются ли значения резидентных аттрибутов, находящихся не в главной записи?
V>Что имеется в виду под "не главной" записью? Я получаю запись для файла вызовом DeviceIoControl с кодом FSCTL_GET_NTFS_FILE_RECORD. Всё, что она возвращает, я печатаю. Нерезидентные атрибуты нужно считывать непосредственно с диска, что делать мне было лень
Если файл состоит например из двух записей. Основная N и вспомогательная M.
Резидентный аттрибут может находиться в любой из них
FSCTL_GET_NTFS_FILE_RECORD только одну запись (N).
чтобы добраться до записи M нужно распарсить attribute list.
Собственно это и написано в MSDN
If a file consists of multiple file records, they must be retrieved individually.
Здравствуйте, MShura, Вы писали:
V>>>>Значения нерезидентных атрибутов не печатаются. MS>>>А печаются ли значения резидентных аттрибутов, находящихся не в главной записи?
V>>Что имеется в виду под "не главной" записью? Я получаю запись для файла вызовом DeviceIoControl с кодом FSCTL_GET_NTFS_FILE_RECORD. Всё, что она возвращает, я печатаю. Нерезидентные атрибуты нужно считывать непосредственно с диска, что делать мне было лень
MS>Если файл состоит например из двух записей. Основная N и вспомогательная M. MS>Резидентный аттрибут может находиться в любой из них
MS>FSCTL_GET_NTFS_FILE_RECORD только одну запись (N). MS>чтобы добраться до записи M нужно распарсить attribute list.
MS>Собственно это и написано в MSDN MS>
MS>If a file consists of multiple file records, they must be retrieved individually.
MS>>Скопируйте сюда комманду, которую вводите
S>Streams of "d:/1.txt": S> Type Id Flags Size "Name" S>0x0010 0x0000 0x0000 48 S>0x0030 0x000a 0x0000 4c S>0x0040 0x0004 0x0000 10 S>0x0080 0x0003 0x0001 4e8
S>вывелось, но тут не выводится содержимое атрибутов, например тот же 0х30 должно быть имя, размер и т.п.
Это был запрос query — вывести список аттрибутов
Теперь нужен запрос dump:
fsutil streams dump d:/1.txt 30 — выводит dump аттрибута 0x30
Если аттрибут допускает duplicates (см $AttrDef) то можно указать и Id аттрибута
Например если у файла несколько имен, то будет несколько безимянных аттрибутов с типом 0x30, но с разными Id
Тогда комманда такая:
fsutil streams dump d:/1.txt 30 a
Содержимое аттрибутов не приводится к текстовому виду
Здравствуйте, MShura, Вы писали:
MS>>>Скопируйте сюда комманду, которую вводите
S>>Streams of "d:/1.txt": S>> Type Id Flags Size "Name" S>>0x0010 0x0000 0x0000 48 S>>0x0030 0x000a 0x0000 4c S>>0x0040 0x0004 0x0000 10 S>>0x0080 0x0003 0x0001 4e8
S>>вывелось, но тут не выводится содержимое атрибутов, например тот же 0х30 должно быть имя, размер и т.п.
MS>Это был запрос query — вывести список аттрибутов
MS>Теперь нужен запрос dump: MS>fsutil streams dump d:/1.txt 30 — выводит dump аттрибута 0x30 MS>Если аттрибут допускает duplicates (см $AttrDef) то можно указать и Id аттрибута MS>Например если у файла несколько имен, то будет несколько безимянных аттрибутов с типом 0x30, но с разными Id MS>Тогда комманда такая: MS>fsutil streams dump d:/1.txt 30 a MS>Содержимое аттрибутов не приводится к текстовому виду
а не используя потоки как то можно их просмотреть?