Robisz to, co trzeba z FileSystemWatcher
. System Windows nie ma wbudowanego mechanizmu niezawodnego raportowania kopii.
Można zawiesić procedurę kopiowania systemu operacyjnego, ale to nie gwarantuje dobrych rezultatów: aplikacje mogą zaimplementować własną kopię, otwierając tylko pliki źródłowe i docelowe oraz kopiując bajty.
Zmiana nazwy jest inna, ponieważ zmiana nazwy dokonana przez system operacyjny nie może być łatwo naśladowana innymi metodami, więc można złapać wszystkie nazwy za pomocą FileSystemWatcher
. Zwróć uwagę, że przenoszenie między dyskami przypomina raczej kopiowanie: nie otrzymasz powiadomienia o zmianie nazwy, ale zamiast tego zostanie utworzone polecenie Utworzone i usunięte.
Więc jeśli naprawdę naprawdę trzeba zauważyć plik kopiowany uzyskiwanie moja proponowanego podejścia jest to:
- Hook rozmowy
CloseFile
, oprócz FileSystemWatcher
.
- Ilekroć plik zostanie zamknięty, może to być spowodowane tym, że jest źródłem lub celem ruchu kopiowania/przenoszenia na różne dyski. Sprawdź jego rozmiar.
- Jeśli znajdziesz dwa zamknięte pliki o tym samym rozmiarze w rozsądnie krótkim czasie, porównaj zawartość. Dość zasobochłonne, ale jedyny niezawodny sposób na zrobienie tego.
Czy można zamiast tego oglądać w instancji schowka? Tylko myśl. http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx –
Jak dobrze można tolerować brak śledzenia kopii? Prawdopodobnie możesz śledzić kopie _most_ (na przykład wykonane za pomocą Explorera), ale niektóre z nich się prześlizgną. –
Dlaczego próbujesz to zrobić? – RQDQ