Ostateczne ominięcie Program Compatibility Assistant w Windows 8.1
W najnowszej wersji beta Windowsa - 8.1 i 2012 R2 Program Compatibility Assistant stał się jeszcze bardziej denerwujący, uniemożliwiając uruchomienie niezgodnych aplikacji. Ponadto nie da się go wyłączyć przez rejestr ani edytor zasad grupy.
Wszystko za sprawą przyjęcia nowego modelu obsługi zgodności ( http://msdn.microsoft.com/en-us/library/dn302074%28v=vs.85%29.aspx). Można na siłę zmieniać ustawienia w gpedit.msc - Computer configuration -> Administrative Templates -> Windows Components -> Application Compatibility - tam Turn off App Compatibility Engine i Turn off Program Compatibility Assistant w siódemce wystarczyło przestawić na Enabled. Ale programiści tej wersji zostawili opcję bez połączenia z jądrem. No cóż.
Po długim śledztwie w systemie znalazłem kilka usług, które są odpowiedzialne za zgodność aplikacji, ale ich dezaktywacja nic nie zmienia (a czasem unieruchamia system). W końcu jednak doszukałem się plików, które mają coś wspólnego tymi usługami -
c:\Windows\AppPatch\sysmain.sdb
c:\Windows\AppPatch\apppatch64\sysmain.sdb
Pliki te trzeba usunąć, przesunąć lub zmienić ich nazwy. Ponieważ Windows jakkolwiek jest zabezpieczony to należy zalogować się na konto SYSTEM - coś jak root na Linuksie, jednak na ten profil nie można się normalnie zalogować. Można natomiast wykorzystać sztuczki by uruchomić proces z jego uprawnieniami. Rzecz jasna my musimy mieć konto administratorskie. Po starem można wywołać
at 17:24 /interactive cmd.exe
gdzie 17:24 to godzina, kiedy chcemy odpalić zadanie (zazwyczaj następna minuta). Jeśli chcemy być zgodni z nowymi trendami i zdobyć praktyczne narzędzie Sysinternals to warto pobrać ze strony http://technet.microsoft.com/en-us/sysinternals/bb545027 PSexec i wywołać
psexec -s cmed.exe
Alternatywą do rozwiązań “systemowych” są wszelkie aplikacje nazwane runassystem. Teraz pozostaje przejąć uprawnienia do samych plików - nie zawsze tak po prostu można modyfikować plik będąc superużytkownikiem. Ja użyłem FAR Manager’a, który sam przejmuje uprawnienia kiedy trzeba, ale wystarczy icacls oraz takeown.
Przypomnę to, co oczywiste na moim blogu - to rozwiązanie jest dość niebezpieczne, ponadto wiersz poleceń tak wyglądający jest furtką do zagrożenia stabilności i integralności okienek
Microsoft Windows [Version 6.3.9431]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Windows> whoami
nt authority\system