Jak wspomniano w komentarzach, ten folder był zwirtualizowany . Wtyczka Silverlight, próbując na nią spojrzeć, widzi zupełnie inne miejsce.
Po pierwsze, trochę historii
W przejściu z Windows XP na Vista Microsoft poważnie podchodził do ludzi działających jako zwykli użytkownicy (w przeciwieństwie do administratorów). Niestety, programiści aplikacji nie stali się poważni, a ładunki programów pisały do lokalizacji „systemowych” C:\Windows
lub HKEY_LOCAL_MACHINE
. Aby umożliwić uruchamianie tych aplikacji, Microsoft dodał funkcję o nazwie przekierowanie lub Wirtualizacja UAC . Gdy programy działające jako użytkownicy standardowi próbowali pisać do lokalizacji tylko dla administratora, zapis się powiódł, ale dane rzeczywiście zostały zapisane w lokalizacji dla użytkownika, w szczególności:
\Users\<username>\AppData\Local\VirtualStore
Ale co to ma wspólnego z tym?
Tryb chroniony przeglądarki Internet Explorer powoduje, że IE i jego wtyczki działają jako coś jeszcze mniej wydajnego niż standardowy użytkownik. Przejście XP → Vista wprowadziło ideę obowiązkowe poziomy . Każdy zabezpieczany obiekt ma obowiązkowy poziom : niski, średni, wysoki lub system. Rzeczy, które mają być napisane przez zwykłych użytkowników / programy, mają średni poziom obowiązkowy.
Rzeczy, do których nawet niezaufane programy mogą zapisywać dane, mają niski poziom obowiązkowy i właśnie w tym działa tryb chroniony IE. Dlatego nie może pisać na żadnym z dokumentów ani upuszczać złych rzeczy do folderu użytkownika. System plików zostanie przekierowany do tych wtyczek do:
\Users\<username>\AppData\Local\Microsoft\Windows\INetCache\Virtualized
Należy zauważyć, że obowiązkowe poziomy integralności mogą odmówić dostępu, nawet jeśli uznaniowa lista kontroli dostępu na to pozwoliłaby. Może to spowodować pewne zamieszanie, jeśli nie wiesz o obowiązkowej kontroli dostępu.
Jak sprawdzić obowiązkowy poziom pliku lub folderu?
Użyj icacls
użyteczność, jak icacls file.txt
lub icacls \path\to\folder
. Kiedy uruchomię to na Virtualized
folder, dostaję:
NT AUTHORITY\SYSTEM:(I)(OI)(CI)(F)
BUILTIN\Administrators:(I)(OI)(CI)(F)
MYCOMP\Ben:(I)(OI)(CI)(F)
Mandatory Label\Low Mandatory Level:(OI)(CI)(NW)
Jak widać, folder ma niski poziom obowiązkowy. Na moim C:\
dysk, dostaję:
NT AUTHORITY\Authenticated Users:(S,AD)
NT AUTHORITY\Authenticated Users:(OI)(CI)(IO)(M)
NT AUTHORITY\SYSTEM:(OI)(CI)(F)
BUILTIN\Administrators:(OI)(CI)(F)
BUILTIN\Users:(OI)(CI)(RX)
Mandatory Label\High Mandatory Level:(OI)(NP)(IO)(NW)
Korzeń mojego dysku ma wysoki poziom obowiązkowy. Większość obiektów nie pokazuje tej linii; gdy jest nieobecny, Windows zakłada, że obiekt ma średni poziom obowiązkowy.
Jak zatrzymać przekierowanie?
Wyłączenie trybu chronionego wszędzie by to zrobiło, ale byłoby to złe dla bezpieczeństwa. Jeśli ufasz witrynie obsługującej aplikację Silverlight, możesz dodać ją do strefy internetowej, która ma wyłączony tryb chroniony. Zrób to, otwierając okno dialogowe Opcje internetowe, przełączając się na kartę Zabezpieczenia, zaznaczając Zaufane strony strefa i kliknięcie przycisku Witryny.