Systemy plików Windows mają flagę „tylko do odczytu”. Jest to prostsze niż ustawianie uprawnień DACL dla tak prostego efektu.
W wierszu polecenia użyj polecenia ATTR. W powłoce GUI powinno być we właściwościach, chociaż GUI może zrobić coś złożonego i wykraczać poza to, czego naprawdę chciałeś.
Ponadto, jeśli ponownie utworzysz katalog o tej samej nazwie, możesz zastosować „przywróć poprzednie wersje”.
Aktualizacja
Eksperymentowałem na systemie Win7. GUI kasowania (bez kosza) ignoruje ten R
flagę na katalogu. Nie ma też żadnych dodatkowych ostrzeżeń o tym, tak jak widziałem flagi H
i / lub S
flagi. Wydanie rd
z wiersza poleceń daje odmowę dostępu zgodnie z oczekiwaniami. Jednak i tak nie można po prostu rd
pozostawić niepustego katalogu: usuń plik i usuń katalog to różne polecenia. Polecenie rekurencyjnego usunięcia katalogu z zawartością usunie zawartość i nie usunie teraz pustego katalogu.
Tak więc ochrona samego katalogu nie działa w akcji GUI, o której myślisz. Oznacza to, że wszelkie bardziej wymyślne podejście do zapobiegania usunięciu samego katalogu nie zapobiegnie jego wcześniejszemu opróżnieniu! Powiedziałeś, że nadal chcesz normalny dostęp do katalogu, aby tworzyć i usuwać pliki, więc całkowite zablokowanie go nie jest rozwiązaniem.
Najlepszym rozwiązaniem wydaje się być dowiązanie symboliczne . Utworzenie dowiązania symbolicznego (nowy styl, który system Windows Vista i wyżej nazywa teraz dowiązaniem symbolicznym) do katalogu na pulpicie, gdy katalog faktycznie istnieje gdzie indziej, działa w tym sensie, że jeśli usunę ikonę pulpitu (shift-delete, bez kosza) faktyczny katalog pozostaje nienaruszony, ponieważ usunięto tylko łącze.
Shift-Delete ikony pulpitu nie obchodziło, czy została oznaczona R
atrybutem.
Program korzystający ze standardowego okna dialogowego otwierania plików systemu Windows bez problemu nawigował przez dowiązanie symboliczne. Właściwie rozwiązało to nazwę połączonego katalogu, więc otwarty plik był prawdziwą nazwą; np. Desktop\MyFolder
stał się, D:\scratch\MyFolder
gdy się nim poruszałem.
Przy użyciu łącza w starym stylu ( skrzyżowania ) program zobaczył nazwę, w której skrzyżowanie wciąż znajduje się na ścieżce; np C:\Users\john\Desktop\MyFolder\test.txt
. fakt, że jest to link, jest niewidoczny. Jednak akcja usuwania GUI nadal traktowała go jako link, nie podążając za nim niewidocznie.
Tak czy inaczej, jeśli program ma używać nazwy aliasem bezpośrednio to będzie działać. Ale posiadanie plików czasami widywanych pod jednym nazwiskiem, a czasem pod innym, może mylić rzeczy.
Wniosek
Użyj Junction na pulpicie z folderem naprawdę zlokalizowanym gdzie indziej, a to będzie całkowicie przezroczyste, że tak się dzieje. Opcjonalnie za pomocą DACL, aby zapobiec przypadkowemu usunięciu pliku punktu połączenia na pulpicie. Przynajmniej przygotuj skrypt, aby go ponownie utworzyć w razie potrzeby.
Premia
Nie próbowałem tego, ale zastanawiam się, czy mógłbyś mieć coś w „nowych przedmiotach”, aby odtworzyć skrzyżowanie lub łącze symboliczne? Następnie kliknij prawym przyciskiem myszy teraz pusty pulpit, wybierz Nowy ... i wybierz z menu „Złamane pulpity”. Niech przywróci wszystko, czego naprawdę chciałeś na pulpicie.