Можно ли программно регистрировать доступ к общему ресурсу Windows (SMB), используя .Net Framework? - PullRequest
3 голосов
/ 14 июля 2009

Просто интересно, можно ли выяснить, кто читал файлы с общего ресурса Windows (в идеале, с использованием .NET, но подойдет win32 native)?

Я пытаюсь создать что-то вроде awstats для общего ресурса Windows, чтобы я мог видеть, кто имеет доступ к тому, что и какие файлы являются самыми популярными.

Меня не интересуют изменения - я просто хочу зарегистрировать доступ (со временем) вместе с ip / hostname и каким файлом.

Ответы [ 4 ]

3 голосов
/ 31 августа 2009

это возможно с помощью WMI ... ниже образца фрагмента c #, используемого для определения, чей доступ к акциям в настоящий момент

using System.Management;
 ManagementObjectSearcher search =
             new ManagementObjectSearcher("root\\CIMV2","SELECT * FROM Win32_ConnectionShare"); 
        foreach (ManagementObject MO in search.Get())
        {
            string antecedent = MO["antecedent"].ToString();
            ManagementObject share = new ManagementObject(antecedent);


            string dependent = MO["dependent"].ToString();
            ManagementObject server = new ManagementObject(dependent);


            string userName = server["UserName"].ToString();
            string compname = server["ComputerName"].ToString();
            string sharename = server["ShareName"].ToString();
        }

Не уверен насчет основных файловых событий для WMI. Но вы можете легко интегрировать это в NoramlFileSystemWatcher. И запустите приведенный выше код, если в сетевом пути обнаружено изменение.

2 голосов
/ 14 июля 2009

Вы хотите FileSystemWatcher . Создайте программу, которая использует ее и регистрирует изменения.

1 голос
/ 02 сентября 2009

SMB по умолчанию работает на порту 445. Таким образом, вы можете просто регистрировать трафик на порту 445 (или на любом другом (-их) порту (ах), на котором вы его запускаете) и достаточно легко вбивать в него любые нужные данные.

Я бы сделал это с WinPcap и WinDump (Windows-версии libpcap и tcpdump). Определение пользовательских правил (скажем, для записи данных только на один или на несколько портов) легко. Ознакомьтесь с разделом «выражение» руководства . Для файлов данных доступны парсеры на разных языках. Быстрый поиск найдет то, что вам нужно.

0 голосов
/ 19 апреля 2010

Чтобы сделать это с помощью WinPcap в .NET, вы можете использовать Pcap.Net . Это оболочка для WinPcap, написанная на C ++ / CLI и C #, и включает в себя инфраструктуру интерпретации пакетов.

...