使用C#确定谁打开了文件

使用C#如何获取有关打开文件的人的信息? 用户名和机器名就足够了。

如果它很重要我有Windows工作站通过Samba访问Linux文件服务器上的文件。 我需要在工作站上运行的程序中使用此信息。

核心.NET库没有任何方法可以做到这一点。

如果我理解正确,你想从Windows工作站A知道谁在Linux文件共享上打开文件,其中一些打开文件的用户可能来自其他Windows框,如果是这种情况那么你需要在Linux端有一个服务,你可以查询,以提供回到你的Windows工作站。

在本地机器上,这可以实现,但至少你需要与NtQueryInformationFile和NtQueryObject (两者都没有正式记录)等OS API互操作。 像进程监视器这样的工具动态安装设备驱动程序以实现它们所执行的检查级别,并且只会告诉您哪个用户打开了哪些本地文件句柄。

我不认为你可以用.NET做到这一点

过去,当我遇到这个问题时,我总是最终使用进程监视器或进程资源管理器 。