3 Stimmen

Ist es möglich, den Zugriff auf eine Windows-Freigabe (SMB-Freigabe) unter Verwendung des .Net-Frameworks programmatisch zu protokollieren?

Ich frage mich nur, ob es möglich ist, herauszufinden, wer Dateien von einer Windows-Freigabe gelesen hat (idealerweise mit .NET, aber win32 nativ tut es auch)?

Ich versuche, etwas zu erstellen wie awstats für eine Windows-Freigabe, damit ich sehen kann, wer auf was zugreift und welches die beliebtesten Dateien sind.

Ich bin nicht an Änderungen interessiert - ich möchte nur den Zugriff (mit Uhrzeit) zusammen mit der IP/Hostname und der Datei protokollieren.

3voto

RameshVel Punkte 62428

Dies ist möglich mit WMI... unten das Beispiel c# Schnipsel verwendet, um zu identifizieren, deren Zugriff auf die Aktien currenlty

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();
        }

Ich bin mir nicht sicher, ob die Ereignislisten der Kerndatei für WMI geeignet sind. Aber man kann dies gut in den NoramlFileSystemWatcher integrieren. Und den obigen Code auslösen, wenn eine Änderung im Netzwerkpfad erkannt wird.

2voto

Randolpho Punkte 54011

Sie wollen FileSystemWatcher . Erstellen Sie ein Programm, das es verwendet und Änderungen protokolliert.

1voto

Sam DeFabbia-Kane Punkte 2589

SMB wird standardmäßig auf Port 445 ausgeführt. Sie können also einfach den Datenverkehr auf Port 445 (oder auf anderen Ports) protokollieren und daraus die gewünschten Daten gewinnen.

Ich würde es tun mit WinPcap y WinDump (Windows-Versionen von libpcap und tcpdump). Die Definition von benutzerdefinierten Regeln (z.B. zur Aufzeichnung von Daten auf nur einem oder auf einer Reihe von Ports) ist einfach. Sehen Sie sich den Abschnitt 'Ausdruck' von das Handbuch . Für die Datendateien gibt es Parser in vielen verschiedenen Sprachen. Mit einer schnellen Suche finden Sie, was Sie brauchen.

0voto

brickner Punkte 6447

Um dies mit WinPcap in .NET zu tun, können Sie Folgendes verwenden Pcap.Net . Es ist ein Wrapper für WinPcap, der in C++/CLI und C# geschrieben wurde und ein Framework zur Paketinterpretation enthält.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X