WOW
Chciałem pozmieniać trochę rzeczy w pliku hosts. Jest to plik odpowiedzialny za (wstępne) rozwiązywanie nazw – ot taki wyjątkowo prymitywny DNS. W Linuksie robi się to dość prosto… vim /etc/hosts. zmienia co trzeba, zapisuje i tyle. W Windowsie teoretycznie też. Plik jest wprawdzie odrobinę zakamuflowany, bo powinniśmy go szukać w c:\%WinDir%\system32\drivers\etc, ale nadal nie wydaje się to specjalnym wyzwaniem. Ponieważ miałem przed sobą Windows w wersji 2003, to uruchomiłem Total Commandera i próbowałem przejść w odpowiednie miejsce. Lekko się zdziwiłem, jak okazało się, że katalog c:\windows\system32\drivers jest… prawie pusty. Dokładniej: znajduje się w nim tylko jeden plik, w dodatku o zerowej długości:
Zacząłem podejrzewać, ze z tym systemem jest coś bardzo nie tak. Ale działa już dość długo i nigdy nie skarżył się na brak, ważnego bądź bo bądź, katalogu. Pomęczyłem trochę google’a i znalazłem winnego. Okazało się, że w 64-bitowych Windowsach jest coś, co nazywa się Windows-on-Windows. Działa to z grubsza tak, że jeżeli 32-bitowa aplikacja chce się dostać do katalogu %WinDir%\System32, to zostaje „przekierowana” w inne miejsce (dokładniej: %WinDir%\SysWOW64). Sam mechanizm robi oczywiście dużo więcej, ale mnie interesowało konkretnie to zachowanie. Jeżeli ktoś potrzebuje się dostać do omawianego katalogu z poziomu 32-bitowch programów, to Microsoft opublikował specjalną łatkę, która to umożliwia. Ponieważ jedyną rzeczą, która mnie interesuje w „zablokowanym” katalogu jest okazjonalna zmiana zawartości pliku hosts, to dałem sobie spokój i uruchomiłem notatnik :-) Ale warto wiedzieć, że takie cuda są i znać metodę ich obejścia.