Перехват и перенаправление операций с файлами Windows в программе на C

337
Guy Mann

Мое намерение состоит в том, чтобы написать программу (у меня Pelles C), чья функция заключается в перехвате чтения / записи Windows в определенные каталоги и перенаправлении их в другие, указанные пользователем. Например, определенное программное обеспечение жестко запрограммировано для записи в C: \ Windows \ Temp, игнорируя системные переменные окружения TEMP и TMP. Когда какая-либо программа запрашивает файловую операцию, моя перехватывает запрос, получает целевой каталог, сравнивает его с записями из созданного пользователем списка, а затем видит, что все операции чтения / записи перенаправляются в нужное место (например, D: \ Temp). ). Мое самое большое препятствие - то, что я не знаю программирования, специфичного для Windows (хотя я знаю ANSI C). И мое исследование Google не было столь же плодотворным. Я надеюсь, что кто-то может указать мне на некоторые ресурсы, которые могут помочь в решении этой проблемы. Замечания:

0
Вы собираетесь отключить каждый сигнал о перехвате файлов, который есть у Windows, делая это таким образом. В Windows уже есть встроенный способ настроить это. CDove 6 лет назад 0
Спасибо за ваш ответ. Не могли бы вы уточнить, как получить доступ к этой встроенной функции? Guy Mann 6 лет назад 0
Он называется [Файловый узел NTFS] (https://en.wikipedia.org/wiki/NTFS_junction_point). CDove 6 лет назад 0
Да, в настоящее время я использую соединения файлов NTFS (например, я переименовал каталог C: \ Windows \ Temp в Temp.orig, а затем сделал: mklink / JC: \ Windows \ Temp D: \ Temp). Я просто не был уверен, был ли это «правильный» способ сделать это. Я буду придерживаться присяжных на данный момент. Guy Mann 6 лет назад 0
Да, это правильный способ сделать это. Или, по крайней мере, это способ, который был создан, чтобы справиться с этой ситуацией. EBGreen 6 лет назад 0
Несмотря на то, что я спросил о том, как это сделать, написав программу, предоставленные ответы функционально эквивалентны для моих целей (не говоря уже о том, что это намного проще). Я буду считать это решенным. Благодаря CDove & EBGreen. Guy Mann 6 лет назад 0

0 ответов на вопрос