Текущий архив: 2004.01.29;
Скачать: CL | DM;
Вниз---|Ветка была без названия|--- Найти похожие ветки
← →
frost (2003-11-02 20:12) [0]Как вытащить сводку файла(папки)? Сводка вкладка котороя добавлена в свойствах файла или папки при работе в файловой системе NTFS. Спасибо.
← →
A.M.D.F. (2003-11-21 21:57) [1]Сводка хранится в скрытом файловом потоке. Сначала узнай имя потока, например запакуй файл в Winrar с включенной опцией "сохранять файловые потоки NTFS" без компрессии, и посмотри название потока открыв архив хекс-редактором (он где то в конце).
Потом можно открывать поток функцией CreateFile как обычный файл, но в первом параметере указывать "имя_файла:имя_потока" и с помощью ReadFile и WriteFile копировать данные. Как узнать имя потока прямо из проги я уже тут спрашивал, но ничего внятного мне не ответили, так что я не знаю.
← →
Бином Ньютоныч (2003-11-22 01:26) [2]type
TInt64 = packed record
Low, High: DWORD;
end;
TWIN32StreamID = packed record
dwStreamId: DWORD;
dwStreamAttributes: DWORD;
Size: TLargeInteger;
dwStreamNameSize: DWORD;
cStreamName: array[0..0] of WCHAR;
end;
var
StreamID: TWIN32StreamID;
BytesRead, d1, d2: Cardinal;
H: THandle;
pContext: Pointer;
s: WideString;
begin
integer(H):=FileOpen("Test.txt", fmOpenRead);
if H = INVALID_HANDLE_VALUE then RaiseLastOSError;
try
ZeroMemory(@StreamID, SizeOf(StreamID));
pContext:=nil;
while
BackupRead(H, @StreamID, SizeOf(StreamID) - SizeOf(StreamID.cStreamName),
BytesRead, false, false, pContext)
do
begin
if StreamID.Size = 0 then Break;
SetLength(s, StreamID.dwStreamNameSize shr 1);
BackupRead(H, @s[1], StreamID.dwStreamNameSize, BytesRead,
false, false, pContext);
s:=Format("ID: %d; Name: %s",[StreamID.dwStreamId, s]);
Memo1.Lines.Add(s);
BackupSeek(H, TInt64(StreamID.Size).Low, TInt64(StreamID.Size).High,
d1, d2, @pContext);
end;
BackupRead(H, nil, 0, BytesRead, true, false, pContext);
finally
CloseHandle(H);
end;
Страницы: 1 вся ветка
Текущий архив: 2004.01.29;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.007 c