Перевод 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, то добавляем новую строчку в нашу таблицу. Если же присутствует, то обновляем информацию.

