Nie ukryty katalog nie wyświetla się w Eksploratorze, ale program, który go utworzył, może uzyskać do niego dostęp

26

Używam IMAPSize do tworzenia kopii zapasowych moich skrzynek pocztowych. Proces zrzuca zawartość skrzynki pocztowej do .emlplików na dysku. W każdym razie pierwsza skrzynka pocztowa, której kopię zapasową utworzyłem, pojawia się zgodnie z oczekiwaniami. Jednak następny nie pojawia się w Eksploratorze i jeśli wprowadzę go w pasku adresu, powie mi, że nie istnieje.

Jednak IMAPSize nalega, aby pliki tam były. (Dużo piśmie dysku była wykonywana w czasie operacji). Poza tym katalogu nie są wyświetlane w oknie katalogu Windows i - jak mam zainstalowane narzędzia GNU - to widać w ls(ale nie w natywnej dir). Nie mogę cdwejść do katalogu, ale lswydaje się, że jestem w stanie uzyskać do niego dostęp (i rzeczywiście wydaje mi się, że katalogi i pliki tam są).

okno wiersza polecenia zawierające listę

Należy również pamiętać, że znacznik czasu i rozmiar pliku backup.dbsą różne w danych wyjściowych diri ls -l.

W skrócie: co się tutaj dzieje i jak to naprawić !?

Xophmeister
źródło
1
Jedyną widoczną różnicą, jaką widzę, jest to, że ls -lpokazuje szczególną liczbę dowiązań twardych do „ukrytych” katalogów i plików ... Nie wiem, dlaczego tak jest, ani w jaki sposób dowiązanie twarde jest interpretowane w środowisku NTFS.
Xophmeister,
... Tylko w celu potwierdzenia: mogę uzyskać dostęp do danych w „ukrytych” plikach z wiersza poleceń, używając cat(innego GNU coreutil). Znów jednak natywne narzędzia systemu Windows (np. type) Nie mogą nawet znaleźć pliku.
Xophmeister,

Odpowiedzi:

63

Niech zgadnę: program, który utworzył ten plik, a także narzędzia GNU, nie działają jako administrator.

Najpierw trochę historii. W czasach Windows XP wiele programów zakładało, że zawsze będą one uruchamiane jako admin i będą pisać w miejscach takich jak C:\Windowsi C:\Program Files (x86)z dziką rezygnacją. W systemie Vista Microsoft próbował sprawić, by mniej osób było administratorami, ale zwykli użytkownicy nie mogą pisać w tych miejscach. Potrzebowali tych wątpliwych programów, aby dalej działać (w przeciwnym razie ludzie nie chcieliby uaktualnić). Wprowadzili więc magiczną funkcję zwaną wirtualizacją UAC .

Programy działające jako zwykli użytkownicy mogą myśleć, że ich zapisy w ważnych lokalizacjach się powiodły, ale w rzeczywistości system Windows wyrzucił dane w lokalizacji dla jednego użytkownika. Gdy programy te szukają plików w katalogu, system Windows sprawdza, czy w sklepie wirtualnym tego miejsca są jakieś pliki, a jeśli tak, dodaje je do listy katalogów. (Rejestr ma równoważną funkcjonalność).

Wygląda na to, że Twój program pocztowy próbował pisać w miejscu poniżej Program Files (x86)podczas działania jako zwykły użytkownik. Zapis został przekierowany, więc nie trafił w to miejsce. Program nadal go widzi, ponieważ Windows utrzymuje złudzenie. Explorer nie widzi tego, ponieważ ogłasza systemowi operacyjnemu, że jest grzeczny i dlatego nie wymaga przekierowania. Polecenie wiersza dirpolecenia nie jest programem (jest to tylko funkcja cmd.exe), dlatego jest również uważane za „znane”, dlatego nie wyświetla się plików zgodności. lsto program, który oczywiście nie jest znany, więc może zobaczyć pliki kompatybilności.

Tutaj znajdziesz swój plik:

%LOCALAPPDATA%\VirtualStore\Program Files (x86)\IMAPSize\backup

Wchodząc do środka VirtualStore, możesz być zaskoczony tym, które programy nie zachowują się dobrze i potrzebują siatki bezpieczeństwa wirtualizacji.

Jeśli chcesz zatrzymać przekierowanie, uruchom program jako administrator lub zapisz kopie zapasowe w lokalizacji, w której możesz pisać bez uprawnień administratora.

Ben N.
źródło
16
I tutaj myślałem, że znam Windows. Albo to dobrze zrobiony żart z głupca z kwietnia, albo nauczyłem się dzisiaj czegoś znaczącego. dzięki, @Ben N!
Aganju
3
@Aganju Kilka miesięcy temu musiałem pomóc użytkownikowi systemu Windows utworzyć parę kluczy dla WinSCP. I stały się niewidoczne w prawie taki sam sposób, jak opisano w pytaniu. W tym czasie postawiłem hipotezę wyjaśnienia podobnego do tego, które podano w tej odpowiedzi. Nie zadałem sobie trudu zweryfikowania mojej hipotezy, ponieważ problem został rozwiązany poprzez umieszczenie pliku w katalogu domowym użytkowników. Ale przynajmniej mogę potwierdzić, że ta odpowiedź wcale nie wygląda mi na żart.
kasperd
3
Niech mnie diabli! Tam są wszyscy. To dziwne zachowanie, nawet jeśli jest zamierzone. Myślałem, że wystąpił błąd systemu plików! ... To wyjaśniałoby również, dlaczego pojawia się moja pierwsza kopia zapasowa skrzynki pocztowej: program został uruchomiony po raz pierwszy z instalatora („Czy chcesz teraz uruchomić takiego a takiego?”), Który podniósłby to do uprawnień administratora; podczas gdy „ukryty” przebieg był jak użytkownik lokalny.
Xophmeister,
1
@Aganju Chyba nigdy bardzo nie korzystałeś z Visty. Miał funkcję pokazującą zwirtualizowane pliki w Eksploratorze; ponieważ problem był wystarczająco powszechny przez kilka lat. Zanim pojawiła się Win7, najczęściej używane oprogramowanie przestało zakładać, że może pisać do podfolderów katalogu instalacyjnego; a funkcja została znacznie mniej widoczna lub prawdopodobnie całkowicie usunięta w najnowszych wersjach systemu Windows.
Dan Neely,
4
@Xophmeister To jest kompromis. Jak zauważono w odpowiedzi, pisanie oprogramowania do własnego katalogu aplikacji było strasznie powszechne przed Vistą. To ogromna dziura w zabezpieczeniach, więc musiała zostać rozwiązana. Alternatywami były 1) zapobieganie zapisywaniu i łamaniu wszystkich aplikacji, 2) korzystanie z wirtualizacji w celu zapisywania plików w bezpiecznym miejscu. 1) jest oczywiście nie do utrzymania i bardzo przeciwko SPO Microsoftu, a ostatecznie doprowadziłoby to do tego, że wszyscy uruchomiliby wszystko pod administratorem jak poprzednio. Może to być mylące, ale prawdopodobnie jest to najlepsza opcja. Nie pisz do niebezpiecznych katalogów.
Luaan,