Как определить адрес файла на харде?
2543
20
Deft
activist
Подскажите, как в С++ определить адрес файла на винте?
Все зависит от файловой системы и операционки.
Электроник
guru
А что значит адрес файла? номер кластера, номер сектора?
Неужели и ты не знаешь как это сделать? :(
Не, ну я то знаю пару способов, только это ничего не даст, файл может быть физически разбит на куски. В WinAPI дляФАТ 32 есть функция GetFileInformationByHandle, она много чего может дать.
Сейчас читают
улитка - косметолог
37707
45
1C 8.1 + WEB сервисы - это кому-нибуть нужно ?
11112
35
Консультирование по чистке и уходу за одеждой (кожа, мех, текстиль).
29978
75
...только это ничего не даст, файл может быть физически разбит на куски...Не имеет значения, пусть это будет адрес первого фрагмента. Задача написать модуль защиты программы от НСК, используя в качестве характеристики среды адрес программы на диске.
А почему именно адрес файла? Почему например не серийник винта?
Странное какое задание... А как быть с дефрагментацией диска?
Естественно после дефрагментации диска программа перестанет работать, но это в данном случае значения не имеет.
Вот поэтому я и удивляюсь... Поскольку задача не имеет ни практической ценности (что это за защита, которая ломается от дефрагментации), ни образовательной, поскольку требует знаний не столько возможностей операционных систем, сколько их доступных "лазеек".
Ну допустим программисты сбербанка написав свой банк-клиент для DOS (есть и них щас и версия для Windows,как там у нее с защитой не знаю) не постеснялись и поставили именно такую защиту, после дефрагментации банк-клиент переставал работать. А в NTFS по мойму есть возможность пометить файл так чтобы при дефрагметации он не перемещался.
...задача не имеет ни практической ценности (что это за защита, которая ломается от дефрагментации), ни образовательной...Не я же задания для курсовиков пишу..... :)
> Ну допустим программисты сбербанка написав свой банк-клиент для DOS
Да эт понятно... что никто не запретит "умному" программеру использовать ту систему защиты, которая именно ему приглянулась. Меня это *как пользователя* напрягает... Ну с какой радости, например, я вынужден был недавно переинсталлировать (переактивировать) МС Офис лишь из-за того, что пришлось переставить сетевую карточку из одного слота в другой? То же самое и с дефрагментацией. И, если в случае МС-ДОС этому еще можно было найти какое-то оправдание (поскольку та поддерживала одну единственную, фактически, файловую систему), то в случае с Виндой - полный капут. Поскольку процедуру определения физического расположения файла на диске пришлось бы изобретать отдельно для каждой комбинации ОС/ФС. Опять же - а как быть с будущими их версиями?
В общем... ИМХО, это задача скорее из области хакерства, чем из профессионального программирования.
Да эт понятно... что никто не запретит "умному" программеру использовать ту систему защиты, которая именно ему приглянулась. Меня это *как пользователя* напрягает... Ну с какой радости, например, я вынужден был недавно переинсталлировать (переактивировать) МС Офис лишь из-за того, что пришлось переставить сетевую карточку из одного слота в другой? То же самое и с дефрагментацией. И, если в случае МС-ДОС этому еще можно было найти какое-то оправдание (поскольку та поддерживала одну единственную, фактически, файловую систему), то в случае с Виндой - полный капут. Поскольку процедуру определения физического расположения файла на диске пришлось бы изобретать отдельно для каждой комбинации ОС/ФС. Опять же - а как быть с будущими их версиями?
В общем... ИМХО, это задача скорее из области хакерства, чем из профессионального программирования.
Электроник
guru
Ну, если это курсовик, то скорее всего просто требуется знание структуры FAT и Particion table. А дальше сложить-умножить. Готового решения может и не быть.
Deft
activist
...скорее всего просто требуется знание структуры FAT и Partition table...Не, тут должно быть проще.
В WinAPI дляФАТ 32 есть функция GetFileInformationByHandle, она много чего может дать.Адрес программы она не дает. Может еще есть варианты?
Электроник
guru
Всё ешё не разобрался? Ручками придётся, ручками.
Deft
activist
Всё ешё не разобрался? Ручками придётся, ручками.Нашел как это делается на АСМе через FCB, но работает только под ДОСом. Решил сменить тему. Буду писАть трояна. :)