查找修改共享驱动器文件夹文件的用户

我有一个共享驱动器,它位于服务器的其他位置。 我想收到一条通知,告诉我修改共享驱动器中存在的任何文件的人的用户名。

目前我正在使用FileSystemWatcher获取通知和Stack溢出问题提供的代码“ 在C#中找出用户名(谁)修改过的文件 ”来查找用户名。

但相反,我得到了共享驱动器目前所在的计算机的名称。 我想要在共享驱动器修改 文件用户名

我的代码是:

private string GetSpecificFileProperties(string file, params int[] indexes) { string fileName = Path.GetFileName(file); string folderName = Path.GetDirectoryName(file); Shell32.Shell shell = new Shell32.Shell(); Shell32.Folder objFolder; objFolder = shell.NameSpace(folderName); StringBuilder sb = new StringBuilder(); foreach (Shell32.FolderItem2 item in objFolder.Items()) { if (fileName == item.Name) { for (int i = 0; i < indexes.Length; i++) { sb.Append(objFolder.GetDetailsOf(item, indexes[i]) + ","); } break; } } string result = sb.ToString().Trim(); if (result.Length == 0) { return string.Empty; } return result.Substring(0, result.Length - 1); } string Type = GetSpecificFileProperties(filePath, 2); string ObjectKind = GetSpecificFileProperties(filePath, 11); DateTime CreatedDate = Convert.ToDateTime(GetSpecificFileProperties(filePath, 4)); DateTime LastModifiedDate = Convert.ToDateTime(GetSpecificFileProperties(filePath, 3)); DateTime LastAccessDate = Convert.ToDateTime(GetSpecificFileProperties(filePath, 5)); string LastUser = GetSpecificFileProperties(filePath, 10); string ComputerName = GetSpecificFileProperties(filePath, 53); string FileSize = GetSpecificFileProperties(filePath, 1); 

我已经解决了这个问题,可以使用.NET的ObjectSecurity类来实现。 我们可以使用GetOwner。 它获取已修改/创建文件的文件的所有者。 这段代码有助于:

 string owner = System.IO.File.GetAccessControl(e.FullPath).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString(); Console.WriteLine(owner);