只是想知道是否有可能弄清楚谁从Windows共享中读取了文件(理想情况下使用.NET,但Win32 native 可以这样做)?

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

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

最佳答案

这是可以使用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中。如果网络路径中检测到更改,则触发上述代码。

10-07 21:42