Перевод Monitoring Access to Your Shared Files on Network
Скачать: [Загрузка не найдена] Скачать: [Загрузка не найдена]
ShareMonitor позволяет отслеживать доступ к сетевым ресурсам вашего компьютера. Когда кто-нибудь удаленно открывает файлы на вашем компьютере, программа отображает сей факт с выводом информации об имени файла, режиме чтения-записи, продолжительности подключения. Всю информацию можно экспортировать с csv, xml. И также Вы можете отключить любого пользователя от Ваших сетевых ресурсов.
Программа использует консольную утилиту openfiles.exe в Windows XP. Она запрашивает информацию об открытых файлах в системе, через определенные промежутки времени. Программа мониторит вывод этой утилиты и на её основании обновляет данные в таблице.
Использование openfiles.exe это самый простой способ для получения информации о доступе к сетевым ресурсам. Можно конечно использовать Windows API для этой цели, но автор не смог найти как это реализовать.
Openfiles.exe — системный файл в Windows, расположен в Windows\System32.
Openfiles.exe в выводе содержит следующую информацию: идентификатор соединения, пользователя, который получил доступ к файлу, имя файла и т.д. Эти данные сохраняются в DataTable (в коде ниже). В таблице есть дополнительный логический столбец «Closed», который отвечает за информацию открыт файл или же уже закрыт.
private void PrepareDataTable() { dataTable = new DataTable("ShareMonitor"); dataTable.Columns.Add("Opened at", typeof(DateTime)); dataTable.Columns.Add("Closed at", typeof(DateTime)); dataTable.Columns.Add("Duration", typeof(TimeSpan)); dataTable.Columns.Add("Host Name"); dataTable.Columns.Add("ID", typeof(int)); dataTable.Columns.Add("User Name"); dataTable.Columns.Add("Type"); dataTable.Columns.Add("Locks"); dataTable.Columns.Add("Open Mode"); dataTable.Columns.Add("File/Folder"); dataTable.Columns.Add("Closed", typeof(bool)); dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns["ID"] }; }
RefreshData() — основной метод приложения, который периодически запускается с помощью таймера. В этом методе, создается новый процесс и выполняется openfiles.exe со следующими параметрами «/query / FO CSV /v». Эти параметры задают получение информации об используемых файлах в виде подробного списка.
RedirectStandardOutput свойство позволяет получить доступ к выводу процесса (который посылается на консоль).
Дальнейший алгоритм такой. Каждая строка представляет собой информацию об одном файле. Берем из каждой строки идентификатор соединения. Если он отсутствует в DataTable, то добавляем новую строчку в нашу таблицу. Если же присутствует, то обновляем информацию.