Zrozumieć kompatybilność aplikacji

Zrozumieć kompatybilność aplikacji

Autor: Marcin Paradowski

Opublikowano: 9/16/2013, 12:00 AM

Liczba odsłon: 8110

Ostatnia dekada obfitowała w coraz to nowsze i doskonalsze wersje systemów Windows, zarówno w edycjach serwerowych, jak i tych dla użytkowników domowych. Ich różnorodność przynosi nie tylko wymierne korzyści, ale potrafi także przysporzyć niemałych problemów. Jednym z nich jest problem braku kompatybilności z aplikacjami, które zazwyczaj działały na poprzednich edycjach Windows. Zapewne wielu użytkowników spotkało się z komunikatem mówiącym o tym, że dany program nie jest przeznaczony dla aktualnie używanego systemu operacyjnego, przez co jego uruchomienie nie jest możliwe.

Można pokusić się o stwierdzenie, że rok 2006, w którym miała miejsce premiera systemu Windows Vista był największym wyzwaniem dla użytkowników domowych. System ten był swego rodzaju ością w gardle w kwestii zgodności z aplikacjami pisanymi w czasach triumfu Windows XP. Trzy lata później pojawił się na rynku Windows 7, wnosząc ze sobą wiele usprawnień związanych m.in. właśnie z kompatybilnością. Szanse na uruchomienie aplikacji czy gry bez dodatkowej ingerencji ze strony użytkownika były nieporównywalnie większe niż parę lat wcześniej.

Nasuwa się zatem pytanie: Skąd te problemy z kompatybilnością przy zmianie systemu operacyjnego na nowszy? Przyczyn może być wiele, począwszy od zastosowania przez dewelopera nieudokumentowanego API, a kończąc na nieoczekiwanych zachowaniach systemu. Zdarza się też, że pewne przestarzałe cechy i funkcje systemu są wycofywane, w głównej mierze ze względu na obawy związane z bezpieczeństwem. Jednak najbardziej frustrującą przyczyną braku kompatybilności jest fakt, że aplikacje często sprawdzają wersję zainstalowanego systemu. Jeśli okaże się on niezgodny z aplikacją, wówczas odmówi ona użytkownikowi uruchomienia.

Występowanie braku zgodności pomiędzy systemem Windows i aplikacjami może być pośrednio spowodowane jednym z następujących motywów, jakimi kieruje się firma Microsoft tworząc kolejne jego wydania: chęć zwiększenia niezawodności, poprawa bezpieczeństwa, poprawa wydajności i możliwości systemu oraz chęć wycofania bądź zastąpienia w nim przestarzałych rozwiązań. Omówimy teraz pokrótce każdy z tych motywów, podając przykładowe zmiany wprowadzane w kolejnych wydaniach Windows, które mogą uniemożliwić użytkownikowi uruchomienie działających do tej pory aplikacji.

Zwiększanie niezawodności

Wraz z pojawieniem się na rynku systemu operacyjnego Windows Vista swoją premierę miała nowa funkcja - Kontrola konta użytkownika (ang. User Account Control, UAC). Dla firm i korporacji miało to niebagatelne znaczenie ze względu na ograniczenie wydatków związanych z operacjami wykonywanymi przez administratorów. Działanie UAC polega na zastosowaniu automatycznych rozwiązań wychodzących na przeciw różnym problemom związanym z kompatybilnością, takim jak zapisywanie plików i rejestrów do chronionych lokalizacji czy niepowodzenia instalacji oprogramowania w lokalizacjach globalnych, wymagających uprawnień administratora. Standardowym użytkownikom UAC pozwala przykładowo na instalację oprogramowania od niezależnych dostawców czy zmianę strefy czasowej podczas podróży, zwiększając ich uprawnienia w wybranym obszarze do poziomu lokalnych administratorów. Należy zwrócić uwagę, że o ile wyłączenie UAC w Windows Vista czy Windows 7 nie wpływa w znaczący sposób na działanie samego systemu operacyjnego, o tyle w Windows 8 będzie skutkować brakiem możliwości uruchomienia sklepu Windows Store.

Vista i kolejne wersje systemów Windows to prócz UAC także funkcja Windows Resource Protection (Ochrona zasobów Windows, WRP), której głównym zadaniem jest zabezpieczanie dostępu do wybranych plików i usług odpowiedzialnych w dużej mierze za stabilność systemu. Przykładowo uprawnienia do zastąpienia biblioteki shell32.dll ma wyłącznie usługa systemowa Windows Modules Installer (składnik Windows Update), co oznacza, że aplikacja nie ma możliwości zastąpienia wspomnianej biblioteki shell32.dll np. analogiczną biblioteką z systemu Windows NT 4.0.

Poprawa bezpieczeństwa

Poprawa bezpieczeństwa to przede wszystkim zapobieganie pewnym zdarzeniom i blokowanie niewłaściwych działań podejmowanych przez aplikacje. Przykładowo do przeglądarki Internet Explorer wprowadzono Tryb chroniony, którego głównym zadaniem jest analizowanie kontrolek ActiveX umieszczanych na stronach internetowych. Jeśli ich wewnętrzne rozmiary nie są zgodne z zasadami strefy Lokalny intranet, stają się one mniej kompatybilne, a co za tym idzie ich dostęp do systemu operacyjnego jest ograniczony. Wspomniany Tryb chroniony jest domyślnie włączony w przeglądarce Internet Explorer 8 i nowszych.

Pojawienie się dodatku Service Pack 2 dla Windows XP zaowocowało wprowadzeniem funkcji Data Execution Prevention (Zapobieganie wykonywaniu danych, DEP), której głównym zadaniem jest ochrona pamięci. Funkcja ta wspierana jest zarówno sprzętowo, jak i programowo, co znacząco zmniejsza możliwości uruchomienia szkodliwego oprogramowania, często stosowanego podczas przeprowadzania ataku na system operacyjny z użyciem techniki przepełnienia buforu. Kontynuując wątek kontrolek ActiveX należy też wspomnieć, że Internet Explorer - począwszy od wersji 7 - jest zoptymalizowany pod kątem DEP. Oznacza to, że jeśli kontrolki generują i uruchamiają dynamicznie kod, ale nie udało się im oznaczyć ich pamięci operacyjnej jako wykonywalnej, wówczas przy próbie uruchomienia spowodują rzucenie wyjątku. Jeśli nie zostanie on obsłużony, nastąpi awaria aplikacji.

Kolejnym etapem poprawy bezpieczeństwa było wprowadzenie funkcji Tracking Protection (Ochrona śledzenia) w Internet Explorerze, począwszy od wersji 9 tej przeglądarki. Przyczyn jej wdrożenia jest kilka, a do najważniejszych zaliczyć należy między innym to, że przeglądarka ta - jako integralna część systemu Windows - wystawiona jest na działanie szkodliwych aplikacji pochodzących z sieci Internet. Głównym celem funkcji Tracking Protection jest ochrona prywatności użytkownika poprzez blokowanie agentów śledzących. Należy jednak pamiętać, że wiele z takich śledzących witryn dostarcza także funkcjonalność aplikacjom sieci Web, co oznacza, że niektóre skrypty znajdujące się w zablokowanej przez Tracking Protection domenie nie będzie mogło działać.

Ostatnią opisywaną w niniejszym artykule funkcją zwiększającą poziom bezpieczeństwa jest funkcja SmartScreen, która zadebiutowała wraz z przeglądarką Internet Explorer 8. Jej głównym zadaniem jest zapobieganie pobieraniu szkodliwego oprogramowania. W przeglądarce IE 9 została ona rozbudowana o dodawanie przez użytkowników opinii nt. pobieranych programów. Pozwala to na budowanie reputacji poszczególnych aplikacji zanim zostaną oznaczone jako dobre, przy czym jeśli plik jest nowy, to przy próbie pobrania go na dysk lokalny zostanie wyświetlony komunikat ostrzegający przed potencjalnym zagrożeniem. Funkcja SmartScreen została zaadoptowana także w systemie Windows 8. Jej działanie pozwala na uniknięcie przykrych konsekwencji wynikających z działania plików niepodpisanych cyfrowo lub posiadających złą reputację.

Poprawa wydajności i możliwości

Jedną z najważniejszych i najczęściej komentowanych funkcji systemu podczas dokonywania migracji do najnowszych wersji Windows jest możliwość wykorzystania potencjału architektury 64-bitowej. Pozwala ona przede wszystkim na uruchamianie aplikacji wymagających bardzo dużej ilości pamięci RAM. Ma to jednak swoje minusy, do których należy zaliczyć m.in. brak możliwości uruchomienia aplikacji 16-bitowych i problemy ze sterownikami urządzeń - zwłaszcza w przypadku tych starszych, pisanych pod kątem 32-bitowych systemów operacyjnych.

Będąc przy architekturze 64-bitowej, warto też wspomnieć o aplikacjach .NET, których kompilator domyślnie kompiluje kod pod dowolną architekturę (opcja Any CPU). Oznacza to, że jeśli uruchomimy taką aplikację na platformie 64-bitowej, wówczas automatycznie stanie się ona 64-bitowa. Analogicznie będzie w przypadku systemów 32-bitowych. Dzieje się tak, ponieważ aplikacje .NET współdziałają z natywnym kodem poprzez usługę międzyoperacyjną COM lub P/Invoke. Jeśli 64-bitowa aplikacja odwołuje się do kodu natywnego, a użytkownik będzie próbował uruchomić ją w systemie 32-bitowym, wówczas proces ten zakończy się niepowodzeniem, gdyż nie będzie ona mogła załadować odpowiednich bibliotek. Na szczęście problem ten można w dość prosty sposób rozwiązać poprzez zmianę ustawień kompilatora lub przez modyfikację pliku wykonywalnego za pomocą narzędzia CorFlags.

Premiera Windows Vista to nie tylko wprowadzenie Kontroli konta użytkownika ale także wdrożenie menedżera Desktop Window Manager (Menedżer okien pulpitu, DWM). Jest to nowy tryb wyświetlania aplikacji, w którym aplikacje zamiast do pamięci ekranowej są renderowane do pozaekranowych bitmap, a następnie składane przez DWM do postaci gotowego do wyświetlenia obrazu. Ma to niebagatelne znaczenie dla firm i osób, które w pracy wykorzystują aplikacje zdalnego pulpitu, dokonujących przekazywania obrazu przy użyciu lustrzanych sterowników. Począwszy od wydania Windows 8 nie ma możliwości wyłączenia DWM - jest on obecnie integralną częścią systemu operacyjnego.

Dla urządzeń mobilnych kluczowym aspektem wydajności jest żywotność baterii. Nowy model aplikacji w Windows 8 powoduje, że aplikacje działające w trybie ModernUI, które nie są aktualnie używane przechodzą w stan uśpienia, a co za tym idzie ich wykorzystanie zasobów drastycznie spada, co z kolei wpływa na mniejsze zużycie akumulatora. Trochę inaczej wygląda sprawa z aplikacjami działającymi na tradycyjnym pulpicie. Ich działanie wiąże się z wykorzystaniem mocy obliczeniowej procesora, a tym samym szybszym zużyciu baterii. Dlatego też, aby sprostać wymaganiom użytkowników Microsoft wprowadził w Windows 8 funkcję pozwalającą na wstrzymanie pracy aplikacji, które nie są aktualnie używane. W przypadku programów, których twórcy nie przewidzieli takiej funkcji, w czasie ich działania mogą wystąpić pewne komplikacje.

Zastępowanie przestarzałych rozwiązań

Wraz z rozwojem systemów Windows, Microsoft nieustannie stara się zwiększać ich kompatybilność z aplikacjami, jednak zdarzają się przypadki, kiedy wspieranie niektórych rozwiązań jest niemożliwe, i to z kilku powodów. Zaliczyć do nich można sytuacje, w których nie jest możliwe dostarczenie lepszego zamiennika lub gdy funkcja posiada wady w znaczący sposób wpływające na wydajność lub bezpieczeństwo systemu. Jeśli tak się dzieje, dana funkcjonalność jest z systemu usuwana. Przykładowo wraz z pojawieniem się Windows Vista porzucono wsparcie dla sterowników drukarek działających w trybie jądra, które często prowadziły do awarii systemu w postaci niebieskiego ekranu. Zastąpiono je sterownikami trybu użytkownika, których awaria nie ma wpływu na system.

Obecnie stopniowo wycofywane są pliki pomocy WinHelp, które zostały wprowadzone wraz z przeglądarką Internet Explorer 3. Na ich miejscu pojawił się nowy format plików pomocy - HTML Help. Powodem takiego posunięcia był fakt, iż choć pliki te dorównywały plikom wykonywalnym, to znacząco obniżały bezpieczeństwo, o które zabiegano wprowadzając system Windows Vista. Biorąc pod uwagę ponad dwie dekady rozwoju ich treści, WinHelp nadal będą dostępne dla użytkowników systemów Windows Vista, Windows 7 czy też najnowszego Windows 8, ale tylko w postaci plików do pobrania.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia