Кто читает мои файлы. Доступ к сетевым ресурсам

ShareMonitor_small

Перевод 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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *