【问题标题】:Is it possible to programatically log access to a windows share (SMB share) using the .Net framework?是否可以使用 .Net 框架以编程方式记录对 Windows 共享(SMB 共享)的访问?
【发布时间】:2010-11-10 17:23:07
【问题描述】:

只是想知道是否有可能找出谁从 Windows 共享中读取了文件(理想情况下使用 .NET,但 win32 本机可以)?

我正在尝试为 Windows 共享创建类似 awstats 的内容,这样我就可以看到谁在访问哪些文件以及哪些是最受欢迎的文件。

我对更改不感兴趣 - 我只想记录访问(随时间)以及 ip/主机名和什么文件。

【问题讨论】:

    标签: c# .net windows winapi


    【解决方案1】:

    这可以使用 WMI... 下面的示例 c# sn-p 用于识别谁在访问当前共享

    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】:

      你想要FileSystemWatcher。构建一个使用它并记录更改的程序。

      【讨论】:

      • 这个解决方案的一个问题是缓冲区可能会填充和丢失一些数据......
      • 我对更改不感兴趣 - 我只想记录访问(有时间)以及 ip / 主机名和什么文件。
      • 感谢您的建议,但我检查了 FileSystemWatcher,似乎没有区分网络访问和本地访问。
      • FileSystemWatcher 不审计,这正是这个用户想要做的。您应该考虑的是启用审计并简单地监视事件日志。 support.microsoft.com/kb/814595 这将是一个可靠的开始。
      • @Nissan Fan 看起来只适用于 Windows Server 版本。我几乎想在 Windows 中编译 samba 并从中解析日志文件。
      【解决方案3】:

      SMB 默认在端口 445 上运行。因此您只需在端口 445(或您碰巧在其上运行的任何端口)上记录流量,然后将其轻松地按摩到您需要的任何数据中。

      我会使用WinPcapWinDump(Windows 版本的 libpcap 和 tcpdump)来实现。定义自定义规则(例如,仅在一个或一系列端口上记录数据)很容易。查看the manual 的“表达式”部分。数据文件有许多不同语言的解析器。快速搜索会找到您需要的内容。

      【讨论】:

        【解决方案4】:

        为了在 .NET 中使用 WinPcap,您可以使用 Pcap.Net。 它是用 C++/CLI 和 C# 编写的 WinPcap 包装器,它包含一个数据包解释框架。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-24
          • 2011-04-03
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 2013-10-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多