krish2
Wdrażany
Liczba postów: 16
|
usuwanie danych
Czasami nie mogę usuwać plików i folderów z dysku.
wywala http://www.iv.pl/images/27972088129693974067.jpg
Notatka została dodana nie znane . Ostatnia edycja dokonana 24.11.2011 11:51 przez peciaq:
Zapoznaj się z: Jak poprawnie tytułować wątki? i popraw tytuł. Ma być streszczeniem problemu opisywanego w poście poniżej.
i5 2500k | Asrock P67 PRO3 (B3) | Corsair DDR3 8GB 1333MHz CL9 | Western Digital Caviar 500GB SATA3 | Gigabyte ATI Radeon HD7870 2GB | Thermaltake Contac 29 BP | be quiet! PUREPOWER L8 630W | SilentiumPC Gladius 800
|
techdive
User systemu
Liczba postów: 232
|
RE: usuwanie danych
Cytat:Uwaga: Wewnątrz systemu NTFS foldery są specjalnym typem pliku. Wyraz „plik” oznacza więc w tym artykule plik lub folder.
Powrót na górę
Przyczyna 1: Plik używa listy ACL
Nie zawsze można usunąć plik, który używa listy kontroli dostępu (ACL, Access Control List). Aby rozwiązać ten problem, należy zmienić uprawnienia dotyczące pliku. Konieczne może być przejęcie prawa własności do plików, aby umożliwić zmianę uprawnień.
Administratorzy zawsze mogą przejąć prawa własności do pliku, nawet jeżeli nie udzielono im oficjalnie uprawnienia w odniesieniu do tego pliku. Właściciele pliku zawsze mogą modyfikować uprawnienia dotyczące pliku, nawet jeżeli nie udzielono im oficjalnie żadnych uprawnień w odniesieniu do tego pliku. Dlatego w celu usunięcia pliku konieczne może być przejęcie prawa własności do tego pliku i udzielenie sobie uprawnień do jego usuwania.
Nie można używać określonych narzędzi zabezpieczeń do wyświetlania lub modyfikowania uprawnień, ponieważ lista ACL pliku nie jest kanoniczna.
W celu obejścia tego problemu należy użyć innego narzędzia (na przykład nowszej kompilacji Cacls.exe).
Wpisy kontroli dostępu (ACE, Access Control Entry) na liście kontroli dostępu mają określoną preferowaną kolejność, która zależy od ich typu. Na przykład wpisy ACE zabraniające dostępu zazwyczaj są umieszczane przed wpisami ACE zezwalającymi na dostęp. Program może jednak zapisywać listę ACL, na której wpisy ACE są rozmieszczone zgodnie z dowolną kolejnością. W niektórych starszych wersjach systemu Windows występowały problemy, gdy system Microsoft Windows usiłował odczytać listy ACL, które nie były kanoniczne. Używając graficznego edytora zabezpieczeń programu Microsoft Windows Explorer, nie zawsze można poprawnie modyfikować listy ACL. Ten problem rozwiązano w nowszych wersjach systemu Windows. Jeżeli występuje ten problem, należy użyć najnowszej wersji narzędzia Cacls.exe. Nawet jeżeli nie można wyświetlić lub edytować listy ACL w miejscu, można zapisać nową listę ACL umożliwiającą uzyskanie dostępu do pliku.
Powrót na górę
Przyczyna 2: Plik jest używany
Nie zawsze można usunąć plik, który jest używany. Aby rozwiązać ten problem, należy ustalić, który proces dysponuje otwartym dojściem, a następnie zamknąć ten proces.
Zależnie od sposobu otwarcia pliku (na przykład w trybie dostępu wyłącznego, a nie udostępnienia), nie zawsze można usunąć używany plik. Można skorzystać z różnych narzędzi ułatwiających ustalenie na żądanie, które procesy dysponują otwartymi dojściami do plików. Aby uzyskać więcej informacji dotyczących narzędzi ułatwiających ustalenie, które procesy dysponują otwartymi dojściami do plików, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
242131 Jak wyświetlić listę procesów, które mają otwarte pliki
172710 Jak używać narzędzia OH z zestawu Resource Kit systemu Windows NT 4.0
Symptomy problemu mogą być różne. Można użyć polecenia Usuń do usunięcia pliku, ale plik nie zostanie w rzeczywistości usunięty, dopóki proces otwierający nie zwolni tego pliku. Ponadto nie zawsze można uzyskać dostęp do okna dialogowego Zabezpieczenia dla pliku oczekującego na usunięcie. Aby rozwiązać ten problem, należy ustalić, który proces dysponuje otwartym dojściem, a następnie zamknąć ten proces.
Powrót na górę
Przyczyna 3: Uszkodzenie systemu plików uniemożliwia dostęp do pliku
Nie zawsze można usunąć plik, jeżeli system plików jest uszkodzony. W celu rozwiązania tego problemu należy uruchomić narzędzie Chkdsk na uszkodzonym woluminie i naprawić wszelkie błędy.
Uszkodzone sektory na dysku, uszkodzenia innego sprzętu lub usterki oprogramowania mogą powodować uszkodzenie systemu plików i nieprawidłowe działanie samych plików. Zwykle stosowane operacje mogą w różny sposób kończyć się niepowodzeniem. Gdy system plików wykrywa uszkodzenie, rejestruje zdarzenie w dzienniku zdarzeń, a użytkownik zazwyczaj otrzymuje komunikat z monitem o użycie programu Chkdsk. Możliwość odzyskania danych z uszkodzonych plików przez program Chkdsk zależy od charakteru uszkodzenia, ale program ten zawsze przywraca system plików do wewnętrznie stabilnego stanu. Aby uzyskać dodatkowe informacje dotyczące korzystania z narzędzia Chkdsk, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
176646 Komunikat o błędzie: Plik lub katalog jest uszkodzony...
187941 Opis narzędzia CHKDSK i nowych przełączników /C oraz /I
Powrót na górę
Przyczyna 4: Pliki znajdują się w ścieżkach na poziomach niższych niż liczba znaków MAX_PATH
Nie zawsze można otworzyć, edytować lub usunąć plik, jeżeli występują problemy ze ścieżką pliku.
Rozwiązanie 1: Użycie automatycznie generowanej nazwy w formacie 8.3 w celu uzyskania dostępu do pliku
W celu rozwiązania tego problemu konieczne może być użycie automatycznie generowanej nazwy w formacie 8.3, aby uzyskać dostęp do pliku. To rozwiązanie może był najłatwiejsze, jeżeli ścieżka znajduje się na niskim poziomie w strukturze, ponieważ nazwy folderów są zbyt długie. Jeżeli ścieżka w formacie 8.3 jest zbyt długa lub obsługa nazw w formacie 8.3 została wyłączona dla danego woluminu, należy przejść do sekcji Rozwiązanie 2. Aby uzyskać dodatkowe informacje dotyczące wyłączania obsługi nazwy w formacie 8.3 dla woluminów NTFS, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
121007 Jak wyłączyć tworzenie nazw w formacie 8.3 na partycjach systemu NTFS
Rozwiązanie 2: Zmiana nazwy lub przeniesienie folderu znajdującego się na niskim poziomie w strukturze
Należy zmienić nazwę folderu, tak aby pliki docelowe nie znajdowały się na poziomie w strukturze niższym niż określony przez zmienną MAX_PATH. W takim wypadku należy rozpocząć od folderu głównego (lub innej wygodnej lokalizacji), a następnie skrócić nazwy folderów. Jeżeli ten krok nie umożliwia rozwiązania problemu (na przykład, jeżeli plik znajduje się w folderze na poziomie niższym niż poziom oznaczony numerem 128), należy przejść do sekcji Rozwiązanie 4.
Rozwiązanie 3: Mapowanie dysku do folderu w strukturze ścieżki
Należy zmapować dysk do folderu wewnątrz struktury ścieżki pliku lub folderu docelowego. Ta metoda umożliwia skrócenie ścieżki wirtualnej.
Załóżmy na przykład, że struktura ścieżki jest następująca:
\\NazwaSerwera\NazwaPodfolderu1\NazwaPodfolderu2\NazwaPodfolderu3\NazwaPodfolderu4\...
W tej ścieżce całkowita liczba znaków jest większa niż 255. Aby skrócić tę ścieżkę do 73 znaków, należy zmapować dysk do NazwaPodfolderu4.
Rozwiązanie 4: Użycie udziału sieciowego znajdującego się na poziomie danego folderu
Jeżeli rozwiązania 1, 2 i 3 nie są wygodne lub nie umożliwiają rozwiązania problemu, należy utworzyć udział sieciowy na jak najniższym poziomie w drzewie folderów, a następnie zmienić nazwę folderów przez uzyskanie dostępu do tego udziału.
Rozwiązanie 5: Użycie narzędzia, które może przechodzić ścieżki na niskich poziomach w strukturze
Wiele programów systemu Windows oczekuje, że maksymalna długość ścieżki będzie krótsza niż 255 znaków. Te programy przydzielają więc w magazynie lokalnym tylko taką ilość miejsca, jaka jest wymagana do obsługi typowych ścieżek. To ograniczenie nie obowiązuje w systemie NTFS, który może obsługiwać znacznie dłuższe ścieżki.
Ten problem może występować, jeżeli na pewnym poziomie w strukturze folderów jest tworzony udział, który znajduje się już na dość niskim poziomie, a następnie przy użyciu tego udziału jest tworzona wielopoziomowa struktura poniżej tego poziomu. Niektóre narzędzia wykonujące operacje lokalnie w drzewie folderów nie mogą przejść całego drzewa, począwszy od poziomu głównego. Dlatego może być konieczne użycie tych narzędzi w specjalny sposób, tak aby mogły przechodzić przez udział. (W dokumentacji funkcji CreateFile interfejsu API opisano metodę przechodzenia w tej sytuacji całego drzewa.)
Zazwyczaj można zarządzać plikami przy użyciu oprogramowania, które tworzy dane pliki. Program, który może tworzyć pliki zagnieżdżone głębiej niż określa parametr MAX_PATH, przeważnie może być także zastosowany do usunięcia plików lub zarządzania nimi. Pliki utworzone w udziale sieciowym często można usunąć za pomocą samego udziału.
Powrót na górę
Przyczyna 5: Nazwa pliku zawiera nazwę zastrzeżoną w obszarze nazw systemu Win32
Jeżeli nazwa pliku zawiera nazwę zastrzeżoną (na przykład „lpt1” ) w obszarze nazwy systemu Win32, nie zawsze można ten plik usunąć. W celu rozwiązania tego problemu należy zmienić nazwę pliku za pomocą programu działającego w systemie innym niż Win32. Można użyć narzędzia POSIX lub innego narzędzia korzystającego z odpowiedniej składni wewnętrznej do obsługi plików.
Ponadto można użyć niektórych wbudowanych poleceń do pominięcia typowego sprawdzania nazw zastrzeżonych systemu Win32, jeżeli specjalna składnia jest używana do określenia ścieżki pliku. Na przykład, jeżeli używane jest polecenie Del w systemie Windows XP, można usunąć plik o nazwie „lpt1” pod warunkiem, że pełna ścieżka pliku zostanie określona przy użyciu następującej specjalnej składni:
del \\?\c:\ścieżka_do_pliku\lpt1
Aby uzyskać więcej informacji dotyczących usuwania plików z nazwami zastrzeżonymi w systemach Windows NT i Windows 2000, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
120716 Jak usunąć pliki z nazwami zastrzeżonymi w systemie Windows
Aby uzyskać więcej informacji dotyczących usuwania plików z nazwami zastrzeżonymi w systemie Windows XP, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
315226 Jak usunąć pliki z nazwami zastrzeżonymi w systemie Windows XP
Jeśli dojście do pliku zostało otwarte przy użyciu typowego mechanizmu CreateFile systemu Win32, niektóre nazwy plików będą zarezerwowane dla starszych urządzeń obsługiwanych przez system DOS. Aby zachować zgodność ze starszymi wersjami, zabroniono używania tych nazw plików i tworzenia ich przy użyciu typowych wywołań plików w systemie Win32. Ograniczenie to nie występuje w systemie NTFS.
Można użyć programu systemu Win32 do pominięcia typowego sprawdzania nazw podczas tworzenia (lub usuwania) pliku, korzystając z tej samej techniki, jak w przypadku przechodzenia folderów znajdujących się na poziomie niższym niż określony przez zmienną MAX_PATH. Ponadto te mechanizmy sprawdzania nazwy nie są używane w przypadku niektórych narzędzi POSIX.
Powrót na górę
Przyczyna 6: Nazwa pliku zawiera nazwę uznaną za nieprawidłową w obszarze nazw systemu Win32
Nie zawsze można usunąć plik, jeżeli nazwa pliku zawiera nazwę uznaną za nieprawidłową (na przykład nazwa pliku z końcową spacją lub kropką albo składająca się wyłącznie ze spacji). W celu rozwiązania tego problemu należy usunąć plik przy użyciu narzędzia wykorzystującego odpowiednią składnię wewnętrzną. Na przykład można użyć wyrażenia „\\?\” w połączeniu z narzędziem mogącym wykonywać działania na pliku:
del "\\?\c:\ścieżka_do_pliku_z_końcową_spacją.txt "
Przyczyna tego problemu jest podobna do opisanej w sekcji Przyczyna 4. Jeżeli jednak typowa składnia systemu Win32 jest używana do otwarcia pliku, którego nazwa zawiera końcowe spacje lub kropki, to końcowe spacje lub kropki są usuwane przez otwarciem pliku. Jeżeli więc w folderze znajdują się dwa pliki „AFile.txt” i „AFile.txt ” (spacja po nazwie pliku), próba otwarcia drugiego pliku przy użyciu standardowych wywołań systemu Win32 powoduje otwarcie pierwszego pliku. Podobnie, kiedy użytkownik usiłuje otworzyć plik o nazwie „ ” (spacja) przy użyciu standardowych wywołań systemu Win32, wtedy otwierany jest nadrzędny folder tego pliku. Jeżeli w tej sytuacji użytkownik usiłuje zmienić ustawienia zabezpieczeń dla tych plików, nie otrzyma zezwolenia na wykonanie tej czynności lub może spowodować nieoczekiwaną zmianę tych ustawień dla innych plików. Jeżeli występuje takie zachowanie, użytkownik może uznać, że uzyskał uprawnienia w odniesieniu do pliku, dla którego w rzeczywistości istnieje restrykcyjna lista ACL.
Powrót na górę
Kombinacje przyczyn
Czasami mogą występować kombinacje tych przyczyn, które mogą skomplikować procedurę usuwania pliku. Na przykład, jeżeli użytkownik loguje się jako administrator komputera, może wystąpić kombinacja przyczyny 1 (brak uprawnień do usunięcia pliku) i przyczyny 5 (nazwa pliku zawiera końcowy znak, który powoduje, że dostęp do pliku jest przekierowywany do innego lub nieistniejącego pliku), dlatego nie można usunąć pliku. Jeżeli użytkownik próbuje wyeliminować przyczynę 1, przejmując prawo własności do pliku i dodając uprawnienia, wciąż nie może usunąć pliku, ponieważ edytor list ACL w interfejsie użytkownika nie może uzyskać dostępu do odpowiedniego pliku na skutek wystąpienia przyczyny 6.
W tej sytuacji można użyć narzędzia Subinacl z przełącznikiem /onlyfile (to narzędzie uwzględniono w zestawie Resource Kit) do zmiany własności i uprawnień w odniesieniu do pliku, który jest niedostępny, na przykład:
subinacl /onlyfile "\\?\c:\ścieżka_do_pliku_powodującego_problem" /setowner=domena\administrator /grant=domena\administrator=F
Uwaga: To polecenie jest pojedynczym wierszem polecenia zawiniętym w celu zwiększenia przejrzystości tekstu.
Ten przykładowy wiersz polecenia modyfikuje plik C:\ścieżka_do_pliku_powodującego_problem zawierający końcową spację, tak aby konto domena\administrator było właścicielem pliku i uzyskało pełną kontrolę nad plikiem. Teraz można usunąć ten plik przy użyciu polecenia Del z tą samą składnią "\\?\".
więcej na ten temat
http://support.microsoft.com/kb/320081/pl
http://www.google.pl
-----------------------------------------------------------------------------------------------------
(Ten post był ostatnio modyfikowany: 24.11.2011 14:58 przez techdive.)
24.11.2011 14:43
|