Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 18:12   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Редактирование диска

Здравствуйте, такой вопрос:
Как найти на диске определенное значение и изменить его...
Допустим, файловая система FAT32 и мне надо найти файл и изменить значение его атрибута... SetFileAttributes не то, что нужно...

Как я понимаю нужно юзать CreateFile(диск) и передвинуть указатель на смещение, но как его найти?
Hottabych вне форума Ответить с цитированием
Старый 13.05.2009, 20:18   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Задача в корни поставленна не верно. Возможно Вы что-то путаите.
Если не углубляться, то дайте ответ на вопрос, по вашим же слова:
Как "передвинуть указатель на смещение, но как его найти" зависит или же имеет вообще какое-либо отношение к "изменить значение его атрибута" ?
И еще что это за такой аттрибут, что SetFileAttributes не подходит ?
BOBAH13 вне форума Ответить с цитированием
Старый 13.05.2009, 21:29   #3
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

Извиняюсь, что не пояснил...
Атрибут, специально нестандартный - $47. Дело в том, что при таком значении файл нельзя ни открыть, не изменить.
Сделать это можно в WinHexе(и тп), открыв диск для редактирования. Там сразу за именем файла идет значение атрибута...
Вопрос: как эту же операцию проделать программно, т.е отредактировать содержимое диска по такому-то смещению?
Hottabych вне форума Ответить с цитированием
Старый 14.05.2009, 08:43   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

В теории обратиться к прерываниям где укажите головку, цилиндр и дорожку диска. Потом запишите ваши данные. Но разрешит ли это виндовс, я точно сказать не могу. (по идеии, должно быть все ок). Опять такие прийдется видимо, таблицу дескрипторов вашей фс читать, и таким образом определять где находится начало файла.
С реализацией помочь не могу.
BOBAH13 вне форума Ответить с цитированием
Старый 14.05.2009, 14:09   #5
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

А можно сделать так?
Код:
...
var
hFile: THandle;
st: ULONG;
buf: array[0..7] of byte;
bread: DWORD;
...
begin
hFile := CreateFile(PChar('\\.\H:'), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0,0);
st := $567;
SetFilePointer(hFile,st,nil,FILE_BEGIN);
ReadFile(hFile, buf, 8, bread, nil);
...
Но почему-то файл не читается...
Да и еще ФС FAT32
Hottabych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форматирование диска С Ruska882009 Windows 5 20.03.2009 12:45
Чтение файлов с диска Wolf-alone Общие вопросы C/C++ 1 17.09.2008 10:05
Скан диска ZYRGiX Win Api 7 30.12.2007 14:05
Дефрагментация диска Viteef Софт 8 06.12.2007 23:33