Mam napęd z obsługą kwot i chcę usunąć wszystkie pliki utworzone przez określonego użytkownika (w rzeczywistości zestaw aplikacji uruchamianych przy użyciu specjalnego konta) z tego dysku. Jak mogę to zrobić bez rekursywnego sprawdzania wszystkich plików i folderów na HDD, czy jest tworzony przez określonego użytkownika czy nie? Potrzebuję tylko "iteratora".Usuń wszystkie pliki utworzone przez określonego użytkownika
Odpowiedz
spojrzeć na poniższym przykładzie
[Test]
public void Test()
{
string user = @"Domain\UserName";
var files = Directory.EnumerateFiles(@"C:\TestFolder")
.Where(x => IsOwner(x, user));
Parallel.ForEach(files, File.Delete);
}
private static bool IsOwner(string filePath, string user)
{
return string.Equals(File.GetAccessControl(filePath).GetOwner(typeof (NTAccount)).Value, user,
StringComparison.OrdinalIgnoreCase);
}
Hmm, wygląda na to, że nie ma sposobu na uzyskanie tej listy bez iteracji każdego pliku na dysku twardym. ok dzięki) – Alexus
Jeśli chodzi o poprawę wydajności, myślę, że przy użyciu algorytmu rekursywnego do wyszukiwania plików i folderów można użyć biblioteki zadań.
Innym sposobem, można zrobić Lucence było korzystne ramy dla wyszukiwania i została już opublikowana wersja dla .NET
TPL i IO - nie SSD? Dla wielu plików wyniki będą znacznie gorsze niż bez TPL ... –
Właściwie można to zrobić iteracyjnie i efektywnie przy użyciu USN Change Journal, patrz http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798.aspx. Właściwe korzystanie z filtrowania pozwala uzyskać listę plików utworzonych przez określonego użytkownika w określonym czasie.
Z drugiej strony ta technika jest dość skomplikowana i nadaje się do zastosowań o krytycznym czasie; jeśli efektywność nie jest centralnym punktem twojej aplikacji, wybrałbym prostsze rozwiązanie.
- 1. Android - Zachowaj lub usuń pliki utworzone przez aplikację po odinstalowaniu
- 2. Vim: Usuń mapowanie utworzone przez vim-plugin
- 3. Pusty katalog (usuń wszystkie pliki)
- 4. Usuń wszystkie pliki z repozytorium svn
- 5. Usuń wszystkie pliki zachowując strukturę katalogów
- 6. Usuń folder i wszystkie pliki/podkatalogi
- 7. Usuń opcję "Wszystkie pliki" z przesyłającego
- 8. Jak wrócić do ostatniego zatwierdzenia + usunąć wszystkie nowo utworzone pliki?
- 9. Jak wyświetlić tylko zmienne utworzone przez użytkownika w PowerShell?
- 10. Znajdź żądania ściągnięcia połączone przez określonego użytkownika
- 11. Skąd pliki sklepów Railo utworzone przez <cflog>?
- 12. Usuń wszystkie w konsoli szyn
- 13. Usuń wszystkie elementy z tablicy pasujące do określonego ciągu
- 14. Usuń wszystkie dane z określonego obiektu Realm Swift
- 15. git usuń wszystkie usunięte pliki z całej historii
- 16. Rekursywnie znaleźć wszystkie pliki, które pasują do określonego wzorca
- 17. Cienie przycinające utworzone przez CALayer.shadow
- 18. Jak możemy uwzględnić pliki utworzone przez ajaxmina w pakiecie msdeploy utworzonym przez MSBuild
- 19. Jak mogę uzyskać wszystkie posty od określonego użytkownika?
- 20. Usuń wszystkie pliki w katalogu bez podkatalogów z Apache Ant
- 21. Usuń wszystkie pliki/katalogi z wyjątkiem dwóch określonych katalogów
- 22. Programowo zamknąć okno utworzone przez `View (x)`
- 23. jquery, usuń pliki cookie
- 24. Python - usuń stare pliki
- 25. Zapytanie TFS o wyświetlenie elementów zmienionych wczoraj przez określonego użytkownika
- 26. C# Usuń wszystkie puste podkatalogi.
- 27. Znajdź wszystkie pliki w folderze
- 28. Zwróć wszystkie indeksy określonego podłańcucha.
- 29. Usuń wszystkie uprawnienia katalogowe
- 30. Jak zbadać wszystkie pliki wyrejestrowany przez użytkownika w Visual Studio 2012 TFS
Czy masz na myśli właściciela pliku *? –
Programowo wierzę, że trzeba powtórzyć wszystkie pliki sterownika. Być może mógłbyś poruszyć to pytanie do serwera serverfault, aby sprawdzić, czy ludzie mogą ci pomóc lepiej. –