Как заставить папку в проводнике Windows активировать внешнее приложение? - PullRequest
0 голосов
/ 28 ноября 2008

Мне нужно создать приложение, которое, когда пользователь копирует файл в определенную папку, моё приложение будет активировано, и файл будет изменен, также, когда пользователь читает любой файл в папке, изменения также будут сделано в файл.

Возможно ли это?

Я буду использовать .net для этого.

Я думаю, что папка C: \ WINDOWS \ assembly как-то так?

Любая помощь будет оценена! Спасибо!

Ответы [ 4 ]

2 голосов
/ 28 ноября 2008

Ну, я уверен, что вы могли бы написать расширение для проводника, которое бы это делало, но более типичный метод, который я знаю, это написать службу Windows, которая отслеживает рассматриваемый каталог, используя класс FileSystemWatcher для мониторинга событий. Служба может затем выполнить запрошенные действия (или создать исполняемый файл для этого).

Одно замечание, которое я заметил, заключается в том, что иногда наблюдатель файлов может пропустить события, если много активности происходит одновременно (по состоянию на .net 2.0 - не проверено 3.5).

Если вы используете этот метод, убедитесь, что вы проверяете содержимое каталога самостоятельно, когда получаете уведомление об изменении, а не полагаетесь на то, что сообщает вам Filewatcher. В итоге я объединил обработку событий filewatcher с редким опросом, чтобы убедиться, что ничего не пропустил.

1 голос
/ 28 ноября 2008

Вы можете обнаружить пользователей, копирующих файлы в папку с помощью службы, которая использует FileSystemWatcher. Изменение содержимого файла, когда приложение читает файл, требует вирусных методов, которые исправляют операционную систему. Как руткит или драйвер фильтра файловой системы. Не то, что я бы рекомендовал рассмотреть, измените файл после того, как он был написан.

c: \ windows \ assembly содержит GAC. .NET устанавливает обработчик расширения оболочки, который скрывает содержимое папки. В противном случае папка достаточно доступна, обработчик расширения оболочки работает только при просмотре папки с помощью проводника Windows. Microsoft не рекомендует писать обработчики расширений оболочки на платформе .NET, поэтому инфраструктуре также не хватает поддержки.

0 голосов
/ 28 ноября 2008

Ближайшая вещь, которую вы получите в .net, - это класс FileSystemWatcher, он будет следить за изменениями (создание и запись), но не за чтением.

Есть много примеров в Интернете и на MSDN

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

0 голосов
/ 28 ноября 2008

Вы можете отслеживать изменения с помощью FileSystemWatcher .

Вы можете настроить компонент на смотреть либо весь каталог и его содержимое или конкретный файл или набор файлов в данном каталоге. Компонент FileSystemWatcher вызывает событие всякий раз, когда файл или подкаталог в указанном корневом каталоге создан, удален, переименован или изменен каким-то другим способом. Типы изменения, которые отслеживает компонент включить изменения в файл или атрибуты подкаталога, размер, последний время записи, время последнего доступа и настройки безопасности.

...