Ну, для файловой системы строим дерево файловых объектов. Т.е. нам надо просто запомнить что и где хранится на диске. Для этого просто делаем вот такую структурку:
Код:
Type
TFileSysItem=record
Name : String;
IsFolder : Boolean;
Size : Int64;
AccessDate : TDateTime;
Items : TList;
end;
Вообще, там лучше класс сделать, но просто лень.
Зполняем это дерево через рекурсивную функцию с использованием FindFirst/FindNext/FindClose (примеров тьма даже на этом сайте).
С реестром ничего подобного не делал, надо копаться что есть...
по поводу перехвата функций API - см тут:
http://alexander-bagel.blogspot.com/...intercept.html