【问题标题】:How to know last modified user of any file in c#? [duplicate]如何知道c#中任何文件的最后修改用户? [复制]
【发布时间】:2014-02-25 12:28:02
【问题描述】:

我正在尝试按用户名进行最后修改,但我无法获取用户名。我在Google 上搜索了很多,但我现在很困惑。因为在某些线程中我发现最后修改的用户无法获取。其他链接给出了一些代码。我使用了该代码,但未检索到最后修改的用户。

有没有人用c#代码获取最后修改的用户名?
有可能吗?

【问题讨论】:

  • 字符串用户 = System.IO.File.GetAccessControl("filepath").GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();此代码检索文件所有者
  • @Grant Winney 我已经尝试了 HABJAN 提供的链接代码。

标签: c# last-modified


【解决方案1】:

这应该给你最后修改的文件和改变它的用户:

var dir = new DirectoryInfo(path);
var lastModified = dir.GetFiles()
    .OrderByDescending(fi => fi.LastWriteTime)
    .First();
string modifiedBy = lastModified.GetAccessControl()
    .GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();

“技术支持”:Finding the user who modified the shared drive folder files

编辑:实际上这只会给您最后修改的文件的所有者。

似乎windows 根本不跟踪这一点。你可以使用FilesystemWatcher 自己做。

【讨论】:

  • 这个函数返回创建这个文件的用户
  • @RajuJoshi:哪个功能? LastWriteTime 是最后一次写入文件的时间。
  • 字符串 modifiedBy = lastModified.GetAccessControl() .GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();此行返回文件所有者,而不是修饰符
  • @RajuJoshi:你是对的。恐怕windows不会存储这个,所以你需要自己跟踪它。一种方法是使用FileSystemWatcher(编辑了我的答案)。
  • 字符串 modifiedBy = lastModified.GetAccessControl() .GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();如果用户来自另一个域,它也不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-27
  • 1970-01-01
  • 2017-05-04
相关资源
最近更新 更多