我正在尝试确定哪个用户帐户用于使用 C# 修改共享文件夹中的文件。
如果程序在具有共享文件夹的计算机上运行,则可以。
您应该创建一个Windows Service
包含一个FileSystemWatcher
. 从这里您可以确定哪个用户修改了引发OnChanged
事件的文件
watcher.Changed += new FileSystemEventHandler(OnChanged);
private static void OnChanged(object source, FileSystemEventArgs e)
{
// Specify what is done when a file is changed, created, or deleted.
Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
}
侦听文件系统更改通知并在目录或目录中的文件更改时引发事件。
我可以想到两个选项来确定哪个帐户修改了文件:
审核:如果启用审核(通过本地安全策略),您可以将共享文件夹设置为审核成功的写入访问。这将告诉您哪些用户打开了文件进行写访问,而不是实际执行写操作的用户。然后,您可以从任何计算机上监视具有共享文件夹的计算机上的安全日志,并查看哪些用户对这些文件具有写入权限。
进程监控:您可以在具有共享文件夹的计算机上运行ProcMon,并将其日志写入文件。然后,您可以定期检查日志以了解对文件的实际写入。请注意,这将告诉您写入的是哪个进程以及该进程在哪个用户下运行,但不一定告诉您该进程当时模拟的是哪个用户。
组合:为了知道哪个用户执行了实际的写入,您可能必须结合审计日志和进程监控日志来查看写入线程在写入时模拟的用户。