Przy zabawach z Powershellem na poziomie plików systemowych odkryłem coś, czego jako szeregowy deweloper w zasadzie pewnie bym nie odkrył (bo i po co).

Ale najpierw przygoda. Pozmieniałem parę plików help'a do Powershell'a, zgodnie z własną instrukcją. Potem odinstalowałem Powershell v2 i wróciłem na moment do Powershella v1 aby sprawdzić jak się u niego wygląda struktura plików w systemie (wcześniej nie zwróciłem na to uwagi).

Wszystko było okay i to co sobie wykombinowałem zadziałało, potem chciałem z powrotem wrócić do Powershell'a v2 i co? Nie chciał się zainstalować i zwracał komunikaty błędów o dostępie do folderów w których chciał przebywać.

Sprawdziłem te foldery i się okazało, że po odinstalowaniu Powershella v1 zostały tam moje pliki i zarazem standardowe podkatalogi jakie Powershell sobie stworzył. Jak sprawdziłem uprawnienia na tych plikach i folderach to się okazało, że nawet Administrator nie ma do nich dostepu.

Łapę na nich trzymały uprawnienia zdefiniowane rolą TrustedInstaller. Wybadałem co to takiego i okazuje się, że to część serwisu systemowego Windows Module Installer (TrustedInstaller.exe), który odpowiada za poprawną instalację, deinstalację oraz modyfikację aktualizacji systemowych jakie przychodzą od Windows Update lub jakie sami sobie zainstalujemy z plików instalacyjnych MSU.

Aby cokolwiek z takim plikiem zrobić trzeba z powrotem podebrać własność obiektu (Ownership) i wtedy zmienić uprawnienia i działać. Problem na standardowych plikach? Gdy TrustedInstaller zauważy taką podmianę jak najszybciej stara się przywrócić oryginalny plik.

Jak tego uniknąć? Po naszych modyfikacjach należy z powrotem zmienić właściciela pliku na TrustedInstaller.

Działanie jak najbardziej słuszne. Choć przypadek plików txt, które podmieniałem może wydawać się średnio niebezpieczny, tego typu obejście zabezpieczeń przy komponentach wykonywalnych już wyobrażam sobie, że mogło by być przykre w działaniu.

Tak czy siak przez to, że Powershell v1 jest aktualizacja systemową (Powershell v2 w wersji CTP jeszcze nie), stwarza trochę komplikacji przy takiej surowej modyfikacji plików.

Wow, poczułem się trochę <ironia=on> chakerem </ironia> (specjalnie przez Ce-Ha) :>