2015-01-23 2 views
1

У меня проблема с подключенным сетевым диском.Определить последнего пользователя, который изменил файл на подключенном сетевом диске?

У меня 3 ПК: A, B и C. Каждый ПК имеет подключенный сетевой диск Share2All (\ Сервер) Z:, этот привод точки к общей папке на сервере, является Share2All папки.

У меня есть приложение, которое использует FileSystemWatcher для мониторинга файлов на ПК. Это приложение работает на трех ПК: A, B и C.

На ПК, когда я редактирую и сохраняю файл, имеющий путь: Z: \ test.txt (на подключенном сетевом диске), измененный Событие (FileSystemWatcher) появляется на тех же компьютерах A, B и C.

Я хочу, когда редактирую и сохраняю файл Z: \ test.txt на ПК, измененное событие появляется только на ПК.

Для этого я пытаюсь определить последнего пользователя, который изменил файл Z: \ test.txt (пользователь на ПК), но этого не могло быть.

Может ли кто-нибудь помочь мне определить последнего пользователя, который изменил файл на подключенном сетевом диске или предоставил мне какое-либо решение для моей проблемы?

Спасибо!

+0

http://stackoverflow.com/questions/11660235/find-out-usernamewho -modified-file-in-c-sharp – artm

+0

Помните, что 'FileSystemWatcher' может пропускать события под большой нагрузкой, поэтому рекомендуется периодически опроса. [Расскажите подробнее] (http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-file-changes) – MickyD

ответ

0

Я не пробовал с этим, но он должен работать на вас, Создайте расширенный класс из FileSystemWatcher и назначьте его значение.

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. 
     } 

    } 
Смежные вопросы