Программа на лету мониторит список файлов, подвергшихся изменению и последние несколько файлов, которые попали в поле зрения программы, хранит в контекстном меню:
… чтобы затем пользователь мог открыть месторасположение файла в проводнике Windows:
Пример «save» в редакторе иконок
Пример «Save» в Excel
Идея этого несложного сервиса возникла давно. Когда обратил внимание, как удобно открывать скачанные файлы в Chrome:
А вот остальные программы, увы, не дают такой возможности, а это все программы, в которых есть функция «сохранить как»:
Как тут не хватает кнопки «Show in folder»:
Ну как мне открыть место куда был сохранён файл? Может я это место две минуты выбирал!? Где «Show in folder»?
Непонятно, почему только некоторые браузеры догадались до этой нужной простой функции?
Программа работает под windows, написана на.NET, light–weight, standalone, singlefile, не требует установки, ничего никуда не сохраняет (кроме настроек) и не отправляет. В приложении присутствуют настройки, чтобы вы могли настроить папки для «наблюдения» и другие мелочи, например, автозапуск при старте windows.
Буду рад, если программа будет вам полезна.
Спасибо за внимание. Have Fun.
P.S. Про sysinternals я в курсе ;) И про антивирусы тоже. Программа сделана на базе примера msdn по FileSystemWatcher: https://msdn.microsoft.com/ru-ru/library/system.io.filesystemwatcher.changed(v=vs.110).aspx.
Комментарии (37)
borislav
30.05.2016 15:53Очень нужная утилита, спасибо автору! Внесу пару пожеланий. Ну во-первых уведомления желательно сделать отключаемыми. Второе: надо исключить системные директории из слежения, плюс возможность добавить стандартные папки типа рабочего стола, загрузок, изображений и прочего пользовательского окружения.
AlexZaharow
30.05.2016 16:11Благодарю. :)
«уведомления желательно сделать отключаемыми» — согласен, потому что, например, при разархивировании, копировании каталогов или сборке проектов их бывает неоправданно много. Я пока не придумал, как сделать этот «момент» более дружелюбным, т.к. он возникает совершенно неожиданно. Может делать ограничения по количеству выводов сообщений за единицу времени?
«надо исключить системные директории из слежения» — По-умолчанию диск C:\ отключен. Для исключения из наблюдаемых путей есть раздел [FoldersForExceptions]. Вот как он выглядит у меня:
Т.е. я наблюдаю диски D:\ и F:\ полностью, но при файловых операциях в указанных каталогах программа не реагирует. Чтобы быстрее добавить каталог в исключения я написал контекстное меню проводника:
«добавить стандартные папки типа рабочего стола, загрузок, изображений и прочего » — Пропишите их в разделе [FoldersForWatch]:
Но тут есть один баг в компоненте, который читает ini-файл. Он кроказаблит пути с кириллицей и исключает их из наблюдения. Пока не знаю как победить. Так что пока только пути с латинскими буквами.
Все настройки в разеде «Open Settings»:
Einherjar
30.05.2016 16:39Но тут есть один баг в компоненте, который читает ini-файл. Он кроказаблит пути с кириллицей и исключает их из наблюдения. Пока не знаю как победить.
Очень просто — не используйте ini, тем более в виде кривых сторонних индусских библиотек. Что за мракобесие в самом деле, чем стандартный app.config не угодил?AlexZaharow
30.05.2016 16:52Не хотелось писать диалог для настроек. Мне ini как-то тоже не очень, но он как-то менее подвержен внесению ошибок руками, чем редактирование xml напрямую.
Например, сделать копипасту имени каталога в ini-файл проще, чем выбирать какой-либо каталог стандартными средствами windows в диалоговых окнах или писать руками теги xml.
Тут уж если и не ini, то json подошёл бы, но он не сишарпабельный :)Einherjar
30.05.2016 16:55Json вполне сишарпабельный, пишем класс настроек и сериализуем/десериализуем его в файл через стандартный DataContractJsonSerializer или проверенной временем сборкой Newtonsoft.Json
borislav
31.05.2016 07:04Интерфейс для отключаемый уведомлений очень простой — галочка в контекстном меню в настройках. Дефолтные папки имхо лучше сделать все за исключением системных типа Windows, AppData и прочих из дефолтных путей, но добавить именно папки пользователя, чтобы установил программу и она сразу работала как надо, ну при желании указал еще другие диски. Тоесть по дефолту следить за всем диском C: кроме системных папок.
AlexZaharow
30.05.2016 16:14Коллеги, я тут нечаянно отменил комментарий «xsikor». Прошу прощения. Вот комментарий:
>> Немного не логично с точки зрения UI выводить новые файлы сверху вниз т.к. приходится вести мышкой «достаточно» большое расстояние от иконки самого приложения в трее
Мой ответ:
Возможно, вы правы. Надо будет сделать настройку и обозначения направления движения файлов. Постараюсь учесть в будущих версиях.
Shoorup
30.05.2016 16:32Однозначно мне такая программа нужна! Сам когда-то хотел что-то подобное сделать, но никак руки не доходили.
Пожелание к интерфейсу — сделать русский язык:)
Наверняка под мою хотелку есть уже готовые программы (прошу подсказать если это так). Мне хотелось бы еще некий монитор/лог файлов которые делает например инсталлер. К примеру ставим программу, и в процессе установки в папке Temp появляются и удаляются файлы. Вот сделать бы лог появления, копий этих файлов и историю изменения/удаления.AlexZaharow
30.05.2016 16:48«Сделать русский язык» — Однозначно! Как «разберусь» с локализацией — сделаю. Постараюсь не откладывать в долгий ящик.
«Вот сделать бы лог появления, копий этих файлов и историю изменения/удаления.» — за одним каталогом можно следить. Уследить за процессом я цели не ставил. Ваша задача из разряда администрирования. У них точно такие утилиты есть. Правда не все бесплатные. В принципе можно сделать ещё одну секцию, чтобы мониторить всё, что происходит в каталоге без исключения, но можно подумать и сделать по секции с настройками на каталог, но это на будущее.
lafa
30.05.2016 20:22+1>Мне хотелось бы еще некий монитор/лог файлов которые делает например инсталлер
Для windows есть бесплатная утилита FileMon, доступна на technet.
Позволяет проследить за процессом, что и куда он пишет\читает
technet.microsoft.com/ru-ru/sysinternals/filemon.aspx
AndrewN
30.05.2016 22:15Uninstall Tool имеет функцию отслеживания вносимых изменений в ФС и в реестр при установке, правда там цель — чтоб при удалении все хвосты подчистить
Darth_Malok
31.05.2016 10:15Большое спасибо за программу. Включил слежение на всех дисках, но использовать буду не для того, для чего использует автор. Мне нравится видеть, как система «живёт») Что где программы сохраняют на диске. Забавно, например, что фаерфокс часто перезаписывает файл SiteSecurityServiceState.txt в профиле пользователя. Почему не хранить это в базе настроек?
Пожелания:
— Работа службой.
— Возможность ведения логов (лучше на sqlite) изменений файлов.
— Возможность настройки слежки за файлами и записью в лог, но без оповещений. То есть добавить дополнительную настройку FoldersForNotification.
Было бы забавно в конце рабочего дня или рабочей недели посмотреть статистику изменения файлов. Надеюсь, понятно, что я имею ввиду.
Может подобная программа уже существует?AlexZaharow
31.05.2016 10:24Пожалуйста.
«Было бы забавно в конце рабочего дня или рабочей недели посмотреть статистику изменения файлов.» — Есть журнал логов Windows, надо только настроить его нормально, чтобы собирать статистику. Но он пухнет так, что мама не горюй. :O
Проблема сбора статистики по изменениям файлов имеет определённую проблему. Некоторые приложения, например, не в суе будет помянутый MS Office, не просто сохраняет файлы. Он сначала создаёт временный, потом удаляет старый и пересоздаёт новый файл со старым именем. Некоторые программы пишут в файл по два раза при сохранении и т.д… Поэтому собранная статистика будет далека от реального положения дел.
«записью в лог, но без оповещений» — пока у приложения чёткая цель — оповещать о текущих изменениях. Поэтому иногда стоит остановиться, чтобы не писать функции ради прикола. Можно слишком увлечься не туда… Надеюсь вы понимаете, что это чревато для личной жизни :)
Но на программу у меня есть планы.
Protos
31.05.2016 15:47а мне было бы интересно отслеживать файлы в которых пользователи хранят на сетевых папках свои пароли, затем наказывать как только впишут новый пароль
AlexZaharow
01.06.2016 15:46Тут возможны сложности не технического плана. Если даже предположить, что у вас есть база паролей, то может оказаться, что в файлах пользователя уже хранятся пароли, которые были введены до того, как вы стали мониторить файлы. А пока записи в файл не произойдёт, то вы и не узнаете, что там лежит пароль.
Мне кажется, что тут надо повесить индексатор на каталоги/диски (типа ElasticSearch+плагин) и периодически мониторить пароли по всему содержимому. Я бы сам хотел так сделать, но это будет непросто. Помните канувшего в лету Google Desktop Search? Вот классная штука была! Жаль что на новых windows серверах она не запускается.
Protos
31.05.2016 15:45с сетевыми папками такое работать не будет как я понимаю?
AlexZaharow
31.05.2016 21:20Да, точно. Падало на определении иконки для сетевого файла, хотя изменение мониторилось. Исправил. Скачайте новую версию.
Protos
01.06.2016 04:25сегодня точно попробую, надо настройку еще сделать: копировать файл в папку при изменении.
как еще одно применение, мониторим список, если хоть один из файлов из списка изменился блокировать рабочую станцию (лучше завершение сеанса) — актуально критичных компьютеров за которыми операторы работают, в банках это АРМ КБР, ПТК ПСД
Protos
01.06.2016 04:28сегодня точно попробую, надо настройку еще сделать: копировать файл в папку при изменении.
как еще одно применение, мониторим список, если хоть один из файлов из списка изменился блокировать рабочую станцию (лучше завершение сеанса) — актуально критичных компьютеров за которыми операторы работают, в банках это АРМ КБР, ПТК ПСД
ljovcheg
31.05.2016 21:35Отличная программулинка получилась. Вроде мелочь, а оказывается, что не хватало.
Из пожеланий: при клике на бабл — открытие папки с файлом, что бы не идти в контектное меню ради только что изменённого файлаAlexZaharow
31.05.2016 21:40Спасибо.
Я подумаю на открыванием по нажатию, потому что обычно нажимают на надоедливые баллоны, чтобы они закрылись. Я не нашёл как сделать на баллон кнопку «закрыть» (везде пишут «как», но вот у меня нет такой настройки, поэтому, как только выясню — поэкспериментирую с этим). Пока — скачайте 1.0.7 — обновил до наблюдения за сетевыми путями.
Shoorup
01.06.2016 08:09Не знаю как у других, а у меня заметно подтормаживает приложение при клике в трее. Возможно такого рода программу надо было писать не на .NET… (ИМХО).
Еще из пожеланий: открытие настройки программы при двойном клике (ЛКМ) на иконке в трее. Настройки кстати хорошо бы не в ini файле сделать, а по нормальному settings в диалоговом окне.
А почему в автозагрузке программа называется stroiproject?
Насчет кликания на бабл поддерживаю. Тоже кликаю и жду открытия папки с целевым файлом.AlexZaharow
01.06.2016 09:49stroiproject — это я начинал эту программу из одного старого проекта, вот его namespace и остался. Сейчас уже убрал.
«заметно подтормаживает приложение при клике в трее» — вполне возможно. Тут много моментов. Во первых — проверка существования файла. Во вторых — чтение иконки файла (как-то не задумывался, что она тоже требует ресурсов). Буду чинить. Отпишусь, когда сделаю.
AlexZaharow
01.06.2016 09:53Правил, но истекло время…
«заметно подтормаживает приложение при клике в трее» — вполне возможно. Тут много моментов. Во первых — проверка существования файла. Во вторых — чтение иконки файла (как-то не задумывался, что она тоже требует ресурсов. Первое, что приходит в голову — сделать кеш иконок). Буду чинить. Отпишусь, когда сделаю.
Про клик в бабл — подумаю. Но будет ли удобно, если в момент нажатия файл в бабл вдруг подменится другим бабл и вы откроете не то, что хотите?ljovcheg
01.06.2016 12:22А что, если не обновлять бабл в тот момент, когда курсор находится на нём?
AlexZaharow
01.06.2016 12:441. Поправил быстродействие. Теперь иконки файлов беруться из кеша, а не читаются для каждого файла.
2. Добавил клик по баблу — действительно прикольная штука получилась!!!
Прошу скачать обновление.Shoorup
01.06.2016 15:47Круто! Программа растет прямо как на дрожжах! Мне всё больше и больше нравится! Ушёл в тестирование временем…
AlexZaharow
01.06.2016 12:54Но как тогда дать понять пользователю, что произошло изменение списка файлов?
AlexZaharow
03.06.2016 02:08Внёс существенное исправление в программу: теперь .ini-файл записывается в UTF-8, поэтому всякие разные шрифты (в том числе кириллические) будут сохраняться и читаться хорошо. Очень благодарен за ценный совет Rustamer: http://forum.ru-board.com/profile.cgi?action=show&member=Rustamer
Предлагаю скачать новую версию https://sourceforge.net/projects/filechangeswatcher/
Shoorup
06.06.2016 10:00Еще одно пожелание: история. Можно сделать чтобы период истории регулировался. Мне например было бы удобно в понедельник найти файлы с которыми я работал в пятницу.
Vladimir_Izotov
08.06.2016 10:57Спасибо за прогу!
А можете сделать так, чтобы файл сразу открывался по клику, а не показывался в проводнике?
Хотя бы по настройке.
Ogoun
С FileSystemWatcher стоит быть осторожным, у него были баги с утечкой памяти. По ссылке можно уйти на обсуждение. Возможно уже пофиксили, но в свое время потратил кучу времени пока понял почему мой сервис (24x7) за две недели начинал по 2 гига оперативы выжирать. Помог только анализ профайлером, потому что на библиотеки из .NET думал в последнюю очередь.
AlexZaharow
Спасибо за предупреждение. Хоть по вашей ссылке об этом и написано в 2011 году, но microsoft не всегда спешит исправлять тонкие места годами. Надо будет понаблюдать.