确定在映射的网络驱动器上修改文件的最后一个用户?

时间:2015-01-23 04:32:31

标签: c# filesystemwatcher last-modified mapped-drive

我遇到有关映射网络驱动器的问题。

我有3台PC:A,B和C.每台PC都有一个映射的网络驱动器是 Share2All(\ Server)Z:,这个驱动器指向服务器上的公共文件夹,是 Share2All 文件夹。

我有一个使用 FileSystemWatcher 来监控PC上文件的应用程序。此应用程序在3台PC上运行:A,B和C.

在PC上,当我编辑并保存具有路径的文件: Z:\ test.txt (在映射的网络驱动器上)时,已更改的事件( FileSystemWatcher )出现在同一个A,B和C PC上。

我想,当我在PC上编辑并保存文件 Z:\ test.txt 时,更改的事件仅出现在PC上。

为此,我尝试确定修改文件的最后一位用户 Z:\ test.txt (是PC上的用户),但不是。

任何人都可以帮我确定在映射网络驱动器上修改文件的最后一位用户,还是为我的问题提供解决方案?

谢谢!

1 个答案:

答案 0 :(得分:0)

我没有试过这个,但它应该适合你, 从FileSystemWatcher创建扩展类并为其分配Tag值。

public class ExFileWatcher : FileSystemWatcher
{
    public ExFileWatcher(string filePath)
        : base(filePath)
    {

    }

    public ExFileWatcher(string filePath, string filter)
        : base(filePath,filter)
    {

    }

    public object Tag
    {
        get;
        set;
    }

}

你可以称之为,

        ExFileWatcher fw = new ExFileWatcher("DirectectoryPath", "*.txt");
        fw.Changed += fw_Changed;
        //Assign a tag here differently on different machine.
        fw.Tag = "1st machine";
        fw.EnableRaisingEvents = true;

并在更改的事件中

void fw_Changed(object sender, FileSystemEventArgs e)
    {
        if ((sender as ExFileWatcher).Tag == "1st machine")
        {
            //This is first machine.
        }
        else if ((sender as ExFileWatcher).Tag == "2nd machine")
        {
            //This is Second machine.
        }

    }