Dlaczego mogę zapisywać pliki w folderze tylko do odczytu?

39

Próbowałem tego na Windows 7 i Windows XP. Uruchom Eksploratora Windows i utwórz nowy folder w tymczasowej lokalizacji o nazwie (powiedzmy) NonWriteable. Kliknij folder prawym przyciskiem myszy i ustaw właściwości folderu na Read-only.

Folder ustawiony jako tylko do odczytu

Teraz otwórz folder i utwórz nowy plik .txt. To jest dozwolone. Dlaczego? Jak ustawić folder, aby nic nie można było w nim modyfikować?

Uwaga: Jeśli kliknę prawym przyciskiem myszy plik .txt i ustawię go, Read-onlysystem poprawnie uniemożliwi aktualizację pliku.

AlainD
źródło
3
Sprawdź zaawansowane opcje i aktywnie odmawiaj uprawnień do zapisu. Z jakiego konta korzystasz? Konto administracyjne powinno zawsze mieć możliwość zmiany rzeczy.
Seth
@Seth Konto administracyjne powinno zawsze mieć możliwość zmiany rzeczy? Co się stanie, jeśli ktoś spróbuje uzyskać dostęp do folderu na innym komputerze?
InterLinked
2
Wydaje się, że system Windows nigdy nie używał tego ustawienia dla katalogów. Jeśli znajduje się on na dysku współdzielonym, okaże się, że Linux nie będzie mógł tworzyć, usuwać ani zmieniać nazw plików, dopóki nie zostanie wyczyszczone tylko do odczytu.
AFH,
2
@Seth: Dobra rozmowa. Po zmodyfikowaniu zaawansowanych uprawnień na Securitykarcie, aby odmówić dostępu Create Files / Write Data, nie mogę teraz tworzyć nowych plików. To wydaje się być błędem / ograniczeniem systemu Windows. Jeśli programowo wywołam GetFileAttributesinterfejs API w folderze, FILE_ATTRIBUTE_DIRECTORYatrybut zostanie ustawiony ... ale nie FILE_ATTRIBUTE_READONLY.
AlainD,
2
Zauważ, że począwszy od systemu Windows 7 okno dialogowe zostało zmienione, aby Read-only (Only applies to files in this folder)wyjaśnić, co właściwie robi ta opcja. W tej odpowiedzi znajduje się zrzut ekranu nowego okna dialogowego .
ComicSansMS

Odpowiedzi:

56

W przeciwieństwie do atrybutu „Tylko do odczytu” dla pliku, atrybut „Tylko do odczytu” dla folderu jest zwykle ignorowany przez system Windows, składniki i akcesoria systemu Windows oraz inne programy. Na przykład możesz usunąć, zmienić nazwę i zmienić folder za pomocą atrybutu „Tylko do odczytu” za pomocą Eksploratora Windows.

Atrybuty Tylko do odczytu i System są używane tylko przez Eksploratora Windows w celu ustalenia, czy folder jest folderem specjalnym, takim jak folder systemowy, którego widok jest dostosowywany przez system Windows (na przykład Moje dokumenty, Ulubione, Czcionki, Pobrane pliki programów) lub folder dostosowany za pomocą karty Dostosuj w oknie dialogowym Właściwości folderu. W rezultacie Eksplorator Windows nie pozwala wyświetlać ani zmieniać atrybutów folderów tylko do odczytu lub systemowych. Gdy folder ma ustawiony atrybut Tylko do odczytu, powoduje, że Eksplorator żąda Desktop.ini tego folderu, aby sprawdzić, czy należy ustawić jakieś specjalne ustawienia folderu.

Źródło: https://support.microsoft.com/en-gb/help/326549/you-cannot-view-or-change-the-read-only-or-the-system-attributes-of-fo

To jest stary artykuł, ale nadal dotyczy wszystkich wersji systemu Windows.

Aby zapobiec tworzeniu plików w folderze, zmień uprawnienia za pomocą Securitykarty we właściwościach folderu. Kliknij Advancedprzycisk i dodaj regułę, aby odmówić dostępu Create Files / Write Data.

David Marshall
źródło
1
@AlainD Tak. To stary artykuł, ale nadal dotyczy nowszych wersji systemu Windows. Wrócę i rozszerzę odpowiedź później.
David Marshall,
1
Więc atrybut „tylko do odczytu” folderu nie ma absolutnie nic wspólnego z tym, że jest w ogóle tylko do odczytu? Czy to nic więcej niż huuuuuge UX?
Pedro A,
6
@Hamsteriffic To dziedzictwo pochodzące z systemu plików FAT. FAT obsługiwał tylko kilka atrybutów plików, a RO był jednym z nich. NTFS posiada wyrafinowany mechanizm ACL do kontroli dostępu, więc atrybuty FAT nie mają znaczenia przy stosowaniu NTFS. Jednak szczególny dialog, o którym mowa, został opracowany wiele lat temu, gdy FAT nadal był powszechny i ​​od tego czasu nigdy się nie zmieniał.
Oakad
4
@Hamsteriffic Podsumowując komentarz oakadów: Tak.
Alexander Kosubek,
2
@jrh Napisał jeden w 2003 blogs.msdn.microsoft.com/oldnewthing/20030930-00/?p=42353
David Marshall