Od czasu do czasu świadczę darmowe usługi wsparcia dla pewnej firmy. Ostatnio przyszło mi się zmierzyć z nadrzędnym programem w tej działalności (nazwy nie wymienię, bo ktoś się może obrazić). Dodam, że program reklamowany jest przez dostawcę jako zgodny z wszystkimi wersjami Windows (w tym Vista i 7). Jego koszt to jakieś kilkaset PLN. Jak na niszowy program (nie sprzedaje się tego tak dużo jak np. MS Office), to koszt niski. Funkcjonalność, którą poznałem wystarczająca, ale mam dwa poważne zarzuty.
Pierwszy to wysyłanie poczty z poziomu aplikacji. W programie podaje się na sztywno ścieżkę do Microsoft Outlook Express. Ugh! No cóż, ten program został w najnowszej wersji systemu zastąpiony przez Pocztę usługi Windows Live. Czemu nie korzystać z dobrodziejstw systemu i nie wywoływać po prostu domyślnego programu pocztowego? The Bat!, Mozilla Thunderbird, Lotus Notes, Microsoft Outlook czy co tam sobie użytkownik wymyśli.
Drugi zarzut to dostęp do danych (baza MS Access). Sprzedawca zalecał kopiować plik fitness.mdb znajdujący się w %ProgramFiles%\<Program>\. I ten plik był kopiowany. Zabawne ile zostało wykonanych kopii pliku, który nie zmienił się w ogóle od czasu instalacji. Czemu nie zmienił się, skoro aplikacja na sztywno zapisuje dane właśnie w tamtym miejscu? Ano przez UAC (User Account Control) dostępne w Windows od wersji Vista.
To właśnie UAC nie pozwala zapisywać danych przez użytkownika w chronionych miejscach (%ProgramFiles%; %Windir%; %Windir%\System32; HKEY_LOCAL_MACHINE\Software). Dla zapewnienia wstecznej kompatybilności (czyt. żeby takie programy jak opisywany przeze mnie mogły się pochwalić kompatybilnością z Windows Vista czy 7) UAC tworzy wirtualny dostęp, a wszystkie dane lądują w %LOCALAPPDATA%\VirtualStore i to tam powinniśmy szukać ich aktualnych wersji.
Programistów do niczego nie będę przekonywał, ale chciałbym uczulić sysadminów, dbających o dane i robiących kopie, aby nie przegapili tej lokalizacji. Pliki, które podlegają temu mechanizmowi można wyświetlić korzystając z przycisku „Pliki zgodności” w odpowiednim katalogu chronionym.
Pamiętać też należy, że gdy kiedyś wyłączymy UAC (bo np. uznamy, że przeszkadza użytkownikowi) wirtualizacja dostępu znika i aplikacja zaczyna czytać z ‘prawdziwych’ ścieżek, a tym samym nagle dane i ustawienia nam znikną. Oczywiście trzeba je przenieść ręcznie z odpowiednich profili.
Do poczytania:
- WSS.pl: Windows Vista: User Account Control
- Baza Wiedzy TechNet: Akademia Windows 7 – Część 4: Bezpieczeństwo – User Account Control
- Inside Windows Vista User Account Control
Tagi: FITasystent, UAC