Jaka jest logika defragmentacji dysku i sprawdzania dysku w systemie Windows? Czy mogę to zrobić za pomocą kodowania C#?Logika w Disk Defragmantation i Disk Check
Odpowiedz
Przez wzgląd na kompletność, oto C# API wrapper do defragmentacji:
http://blogs.msdn.com/jeffrey_wall/archive/2004/09/13/229137.aspx
Defragmentacja z tych interfejsów API jest (powinien być) bardzo bezpieczny w dzisiejszych czasach. Nie powinieneś być w stanie uszkodzić systemu plików, nawet jeśli chcesz.
Komercyjne programy do defragmentacji korzystają z tych samych interfejsów API.
Różnica polega na tym, że firmy komercyjne wiedzą o systemach plików, a OP nie może nawet zdefiniować defragmentacji. Chciałbym, żeby wiedział, co to za spust, zanim dam mu pistolet. –
Spójrz na numer Defragmenting Files w msdn, aby uzyskać pomocników API.
Powinieneś ostrożnie pomyśleć o użyciu C# do tego zadania, ponieważ może to wprowadzić niepożądane obciążenie dla przechwytywania do natywnego Win32.
Jeśli nie znasz logiki do defragmentacji i jeśli sam nie napisałeś systemu plików, więc nie możesz autorytatywnie sprawdzić, czy nie występują w nim błędy, może po prostu uruchom nowe procesy z opcją "defrag" i "chkdsk" "?
Pomimo swojej wagi system plików jest niczym więcej niż strukturą danych, która odwzorowuje nazwy plików na listy bloków dyskowych. I śledzi meta-informacje, takie jak rzeczywista długość pliku i pliki specjalne, które przechowują listy plików (np. Katalogi). Kontroler dysków sprawdza, czy struktura danych jest spójna. Oznacza to, że każdy blok dysku musi być albo wolny do przydzielenia do pliku, albo do jednego pliku. Może również sprawdzić, czy niektóre bloki dysków wydają się być plikami, które powinny znajdować się w katalogu, ale nie z jakiegoś powodu.
Defragmentacja polega na przeglądaniu list bloków dyskowych przypisanych do każdego pliku. Pliki będą zazwyczaj ładować się szybciej, jeśli będą używać ciągłego zbioru bloków, a nie plików rozproszonych po całym dysku. Zasadniczo cały system plików będzie działał najlepiej, jeśli wszystkie używane bloki dyskowe ograniczą się do jednego spójnego zakresu dysku. Tak więc sztuczka polega na przemieszczaniu bloków dysków w bezpieczne miejsce, aby osiągnąć ten cel, nie niszcząc systemu plików.
Główna trudność polega na uruchomieniu tych aplikacji, gdy dysk jest w użyciu. Jest to możliwe, ale trzeba być bardzo, bardzo, bardzo ostrożnym, aby nie popełnić jakiegoś oczywistego lub bardzo subtelnego błędu i zniszczyć większość lub wszystkie pliki. Łatwiej jest pracować w systemie plików w trybie offline.
Inną trudnością jest uporanie się ze złożonością systemu plików. Na przykład znacznie lepiej byłoby budować coś, co obsługuje system plików FAT32 niż NTFS, ponieważ ten pierwszy jest znacznie prostszym systemem plików.
Dopóki masz niski poziom dostępu do bloku i rozsądny sposób radzenia sobie z problemami współbieżności (najlepiej obsługiwane przez pracę w systemie plików, gdy nie jest używany) możesz to zrobić w C#, perlu lub dowolnym języku lubisz.
ALE BARDZO DOSKONAŁA. Wcześniejsze wersje programu zniszczą całe systemy plików. Późniejsze wersje zrobią to, ale tylko w niejasnych okolicznościach. A użytkownicy niszczą swoje dane, gdy są wyjątkowo wściekli i sprzeczni.
Dzięki Philips, może to dać mi rozwiązanie. – Sauron
Istnieją interfejsy API systemu Windows do defragmentacji, które są całkowicie bezpieczne i działają w systemie plików NTFS. – andreialecu
Mark Russinovich napisał artykuł Inside Windows NT Disk Defragmentation jakiś czas temu, który zawiera szczegółowe informacje. Jeśli naprawdę chcesz to zrobić, naprawdę radzę użyć wbudowanych funkcji do defragmentacji. Co więcej, na ostatnich systemach nigdy nie widziałem potrzeby, aby użytkownik dbał o defragmentację; zostanie to zrobione automatycznie zgodnie z harmonogramem, a ludzie z NTFS w MS są zdecydowanie mądrzejsi od ciebie (przepraszam, ale robią to od jakiegoś czasu, nie robisz tego).
Ten artykuł jest bardzo pomocny. – Sauron
- 1. Obliczyć Total disk i/o jednym procesem
- 2. SVN - SQLite - disk I/O error
- 3. „Nie można znaleźć programisty Disk Image”
- 4. Disk Structuring Element opencv vs Matlab
- 5. Python: Sprawdź, czy istnieje urządzenie/dev/disk
- 6. JCS edycja Disk Auxiliary Cache DiskPath
- 7. Połączyć informacje "Get-Disk` i" LogicalDisk "w PowerShell?
- 8. toolset Wix: utworzyć katalog w root disk (dysk systemowy lub C: \) i kopiowanie plików wewnątrz
- 9. Ograniczenia MySQL i Check
- 10. Logika i matematyka orientacji obiektu
- 11. oddzielna logika i GUI w java
- 12. Vala GUI i logika w C++
- 13. ACL Check/Management w C#
- 14. Logika aplikacji do fakturowania i subskrypcji?
- 15. Właściwość Objective-C i logika syntezy
- 16. Logika gry Libgdx w Renderowanie?
- 17. Jaka jest logika systemów śledzenia i śledzenia?
- 18. Najlepsza zmiana rozmiaru i/lub logika zbiorów
- 19. logika logiczna w szablonie kierownicy
- 20. Logika rozgałęziania w widoku MVC
- 21. Złożona logika biznesowa w repozytorium
- 22. Logika warunkowa w sterowaniu repeterem?
- 23. Logika podzielonego łańcucha w J2ME
- 24. Powtarzające ustawiaczy logika w Delphi
- 25. Logika warunkowa w ASP.net strona
- 26. Proxy Check in python
- 27. PHP Check Process ID
- 28. Logika po stronie klienta LUB logika po stronie serwera?
- 29. bash check mysql connect
- 30. Logika operatorzy zamknięciem Szablony
Defragmentacja dysku jest złożonym tematem i jest specyficzna dla podstawowego systemu plików urządzenia, które defragmentujesz. Co dokładnie próbujesz osiągnąć? – scwagner
Dlaczego miałbyś przeprowadzić defragmentację dysku w C#, jeśli nie znasz jej koncepcji? –
Robię aplikację opartą na systemie. Chcę zaimplementować w nim defragmentator dysków i narzędzie sprawdzania dysku. – Sauron