fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
4 minut

Windows 8 i UAC


06.05.2013

Od kiedy User Account Control (UAC) pojawiło się w Viście, wyłączanie tego ustrojstwa to pierwsza rzecz jaką robię po instalacji świeżego systemu. Przy “normalnych” ustawieniach mechanizm ten powoduje, gdyby ktoś jeszcze nie wiedział, ciągłe wyskakiwanie okienek pytających o pozwolenie wykonania jakichkolwiek operacji. Microsoft doszedł do wniosku, że jeżeli jakieś złośliwe oprogramowanie będzie chciało wykonać niebezpieczną operację, to musi uzyskać na to zgodę użytkownika. No i spoko, ale jeśli ja klikam “Allow” w tym durnym okienku 100x dziennie to czy po pierwszej godzinie nie przestanę czytać jego zawartości? Wtedy i tak kliknę “Allow” nawet jeśli aplikacja “I will kill your family” zapyta o pozwolenie na “format c:\”. Odpowiedzialność z OS została zdjęta, a dysk i tak mam wyczyszczony, jedyna różnica to artretyzm spowodowany wciskaniem entera o wiele częściej niż potrzeba.

Ale dość o tym “dlaczego nienawidziłem UAC do tej pory”. Po instalacji Windows 8 oczywiście wszedłem w ustawienia UAC i zmieniłem je na “Never notify”, co zawsze wyłączało to śmierdzące ustrojstwo:

clip_image001

Ale co się okazało? Że w Windows 8 nie jest tak prosto.

A jego obecność generowała różne problemy (dopiero po jakimś czasie doszedłem do wniosku że to właśnie tam leży ich źródło), takie jak:

  • skrypty autohotkey działały tylko w aplikacjach uruchomionych “normalnie”, a nie działały w Visual Studio (uruchamianym z “ptaszkiem” run as administrator)
  • te same skrypty na jakiś czas PRZESTAWAŁY działać w aplikacjach uruchomionych “normalnie” nawet po utracie focusa przez VS
  • rozwiązaniem byłoby wymuszenie uruchamiania również tychże skryptów jako administrator…

clip_image002

… ale wtedy nie działa automatycznie uruchomienie skrótu podczas startu systemu (poprzez wrzucenie go do “C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”)

  • automatycznie uruchomienie skrótu jako administrator można osiągnąć w inny sposób (tworząc odpowiednie zadanie w Task Schedulerze), ale tutaj moja cierpliwość się wyczerpała
  • musiałbym KAŻDĄ aplikację mającą do czynienia z Autohotkey albo Visualem uruchamiać w ten sposób (czyli np Logitech SetPoint, która definiuje zachowanie przycisków mojego trackballa, albo slickrun, albo…)

Mój komfort pracy z Windows 8 uległ zauważalnej poprawie, gdy w okolicy godziny 5:25 dnia 3 maja 2013 (niech się święci!) wyłączyłem do badziewie kompletnie. Całkowite pozbycie się UAC w Windows 8 można osiągnąć tylko i wyłącznie modyfikując wartość w rejestrze: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System->EnableLUA = 0 . A potem oczywiście restart.

Z tymi problemami w Win8 męczyłem się dobrych parę miesięcy zanim zdecydowałem się na ten krok. Dlaczego? Dlatego, że po wyłączeniu UAC nie będą działały aplikacje “Metro-style”.

clip_image003

Można zapytać: “who cares?”. Dopiero po kilku miesiącach z Win8 mogę odpowiedzieć: “not me”. Bo przez cały ten czas ani razu intencjonalnie nie uruchomiłem takiej aplikacji, a jak czasami “Muzyka” czy “Wideo” mi się odpalały niechcący to mnie krew zalewała. Więc wyłączenie UAC, jak się okazało, niesie za sobą dodatkową korzyść, która mogła być wcześniej postrzegana jako ograniczenie.

Aha, no i oczywiście na koniec wypada napisać: “jeśli wyłączysz UAC to jesteś sam odpowiedzialny za wszelkie szkody jakie ktoś/coś wyrządzi bez twojej wiedzy twojemu komputerowi”, ale tak samo ty sam byłbyś za to odpowiedzialny gdybyś kliknął “allow”, co pewnie by się wydarzyło gdyby wydarzyć się miało.

0 0 votes
Article Rating
32 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
gt
gt
11 years ago

Historia developerów “mądrzejszych” od twórców OS jest długa i zawsze na końcu ma taki sam smutny skutek: cierpi user.
Zamiast douczyć się jak UAC działa i co daje w zamian za (może i wkurzajace) prompty – wolisz siać FUD tłumacząc wszystkim, że to zło.
Pomijając już zupełnie kwestię, czy przypadkiem twój post nie pokazuje, że zatrzymałeś się w edukacji na temat bezpieczeństwa OS na poziomie 2001 roku i Windows XP, chciałbym tylko zwrócić uwagę na parę kwestii merytorycznych:
– “ciągłe wyskakiwanie okienek”, “100x dziennie” – sprawdziłeś, czy tak Ci się tylko wydaje? Policzyłeś wpisy w eventlogu, które mogą być tworzone przy każdym wyskakującym oknie UAC?
– UAC nie służy do wyrażania zgody na niebezpieczne operacje tylko do posłużenia się innym tokenem. Do czego ten inny token posłuży i czy jest faktycznie potrzebny, zależy od programisty. Douczonego.
– “wtedy kliknę Allow” – hmm… a w jakich systemach jest “Allow”. Bo w Microsoftowych to niekoniecznie.
– “format c:\” – a kiedy ostatnio to robiłeś? W czasach DOSa? Bo później już nie bardzo działało, pomijając już, że podajesz błędną składnię polecenia.
– “wciskaniem Entera .. częściej niż potrzeba” – UAC Prompt akurat Enterem się nie daje potwierdzić, bo domyślną odpowiedzią jest “No”… Używa się do tego na przykład skrótu Alt+Y, powodującego znacznie dolegliwszy artretyzm.

Z dobrego serca radzę: naucz się po co jest UAC i co daje. Zrozum jak go efektywnie używać w swoim systemie i w swoich aplikacjach. Pokochaj go albo przynajmniej toleruj tak, jak zapewne tolerujesz fakt, że od czasu do czasu musisz gdzieś wprowadzić hasło. W końcu, to też przykre utrudnienie życia…

Skąd tyle mocnych słów w moim komentarzu? Stąd, że (co oczywiście nijak nie musi Cię obchodzić), gdybym nie znał Cię długo i z najlepszej strony, co pozwoliło mi uznać tę właśnie stronę jako reprezentatywną dla Ciebie jako całości – ten post zdyskwalifikowałby Cię w moich oczach jako programistę. Wpisuje się w długą i ponurą historię, która kiedyś kazała pisać podobne posty o nieużywaniu nazw innych niż 8.3, potem o tym, że tylko praca na koncie admina ma sens a dzisiaj, że UAC to zło.

Tom
Tom
11 years ago
Reply to  procent

Podobny funkcjonalnością do AutoHotKey jest AutoIt.

BTW świetny blog – miło się czyta.

Tomek
Tomek
11 years ago

Dlaczego używasz Windows 8 ? Co było nie tak z Windows 7 ?

Przemysław
11 years ago

Zgadzam się z gt, wyłączenie UAC jest jedną z najgorszych rzeczy z punktu widzenia bezpieczeństwa, jakie można “ustawić” w systemie Windows. Rozpowszechnianie tego typu “porad” jest technicznie szkodliwe i w ogóle nie powinno mieć miejsca. Zamiast tego należy ograniczyć naturalną u deweloperów skłonność do kombinatorstwa z różnymi narzędziami i postarać się zrozumieć jak działają mechanizmy systemu.

Mając wyłączony UAC cofasz się do modelu bezpieczeństwa sprzed Windows Vista, a nawet gorzej, ponieważ w sytuacji, gdy pracujesz na koncie zwykłego użytkownika, mając wyłączony UAC tracisz możwliwość korzystania z Run As, co było możliwe w XP. Ponadto konsekwencją wyłączenia UAC jest praca cały czas na koncie z uprawnieniami administracyjnymi (bo na koncie zwykłego użytkownika staje się to mocno utrudnione)

Nie byłbym wcale taki przekonany, czy aby napewno rezygnując z własnego bezpieczeństwa, nie narażasz też pośrednio na ryzyko klienta…

Jakub Gwóźdź
Jakub Gwóźdź
11 years ago

UAC był jedną z lepszych rzeczy wprowadzonych w Viście. Niestety jego “społeczny” odbiór był bardzo negatywny, przede wszystkim dlatego, że faktycznie wyskakiwał zbyt często (zresztą Vista nie tylko pod tym względem była nieergonomiczna – będąc fantastyczną technologiczną rewolucją nie została niestety dopracowana należycie pod względem UX – to przyszło dopiero w Windows 7 )

Warto przy tym zwrócić uwagę, że monity UAC wyskakiwały zbyt często przede wszystkim z powodu tego, że ciągle korzystaliśmy z ogromnej bazy źle napisanych programów. Dopiero premiera Visty zmusiła programistów do pisania poprawnie i np. nie zapisywania w trakcie normalnej pracy niczego w HKLM, niesejwowania do c:\Program Files (czy nie daj borze do c:\windows) etc.

W chwili obecnej (zwłaszcza w win7 i win8) dialog UAC włącza się najczęściej przy okazji instalacji nowego softu, ale jak często to się robi? A jeśli ktoś upiera się przy używaniu 10 letnich programów typu legacy, to może powinien to robić na VirtualBoxie z winXP ? Bo wyłączanie zabezpieczeń to trochę dziecinada, która może prowadzić do zrobienia sobie kuku na złość mamie.

Tomasz Wisniewski
11 years ago

Do czasu jak cos/ktos rozwali Ci system i bedziesz musial stawiac wszystko na nowo i wtedy TWoja produktywnosc wyniesie 0% ;)

Tomek
11 years ago

% … a nie mówiłe (tweetałem) – też uważam że wyłączenie UAC nie jest rozwiązaniem. Sam pracuje z włączonym UAC i chwalę sobie jak najbardziej. Co prawda rzadko doświadczam tego typu problemów jak opisujesz. Szybciej już miałem problemy z wdrożeniem oprogramowania po stronie serwera, gdzie tylko wyłączenie UAC pozwalało je obejść – niestety w większości było to oprogramowanie MS. Fakt, że potem UAC był włączany ponownie.

Tak że tutaj się zgodzę z GT w większości. Hihi – widać podział trochę IT exp \ DEV exp.

Dodatkowo zgodzę się z tym, że developer _MUSI_ przetestować przynajmniej gotowe rozwiązanie na koncie zwykłego usera, w przypadku usług na kontach uslug czy puli _BEZ_ wysokich uprawnień z zachowaniem least priviledges principle i z włączonym UAC. Na stacji Dev też bym kazał działać bez uprawnień Admina ale tutaj IMO można iść na ustępstwo o ile potem weryfikacja następuje jak powyżej. Wypuszczanie softu bez tego sprawdzenia powinno być karalne :), w szczególności jeżeli to jest soft dla end-usera.

Tomek
11 years ago

(…) Testowanie rozwiązań to inna bajka. Ale też nie żyjemy w czasach gdzie wypala się soft okienkowy na cdrom i wysyła pocztą do klienta. (…) – niby nie, ale to co sie spotyka wdrozone jako obejscie tak napisanego softu to o pomste do nieba wola – typu interaktywna sesja domain admina logowana przy starcie systemu zeby jakas kontrolka dzialala poprawnie na stronach serwowanych przez serwer ;)

Jakub Gwóźdź
Jakub Gwóźdź
11 years ago

“Ale też nie żyjemy w czasach gdzie wypala się soft okienkowy na cdrom i wysyła pocztą do klienta”

https://lh4.googleusercontent.com/-3OMCPzye0tg/UYUHMW9zZqI/AAAAAAAAB-s/88M_djbnq7U/w438-h549/13+-+1

I don’t always test my code, but when I do, I do it in production.

Ej Jakub
Ej Jakub
11 years ago

Ej Jakub, kim jest ten gość?

unodgs
unodgs
11 years ago

Ja też zawsze wyłączam UAC. Dla developera jest on zbędny (nie mówię o testowaniu na docelowej platformie). Procent ma rację – zamiast wmawiać sobie że UAC jest piękny, cudowny i nieinwazyjny wyłącza go jeśli przeszkadza mu w pracy. Nie przyjmuję argumentów o rozwaleniu systemu. Firewall jest, antywir jest, jako developer instaluję zestaw znanych programów z zaufanych źródeł. Co mogłoby mi się takiego stać?

Mirosław Głaz
Mirosław Głaz
11 years ago

Nie od dziś wiadomo, że system operacyjny jest tak dobry jak poziom wiedzy operatora. Dla osób potrzebujących tej funkcjonalności – niech sobie będzie. Jeśli jednak operator/uzytkownik dojdzie do wniosku, że mechanizm mu przeszkadza – niech go wyłącza. I nic nikomu do tego. W tym producentowi, który próbuje przemienić wodę w wino i protezę (błędy projektowe poprzednich wersji systemu dopuszczające powstanie patologicznych aplikacji) nazwać nową, nieodzowną funkcjonalnością. BTW Do dziś nie mogę zrozumieć ideologii, która doprowadza do sytuacji gdy pierdylion komunikatów ostrzega o podniesieniu uprawnień. Przecież to znieczula, zamiast rozwiązywać problem. Procent popieram wpis :-)

Paweł
Paweł
11 years ago

Ja też popieram Procenta. Może technicznie UAC jest niezłym rozwiązaniem i formalnie daje duży wzrost bezpieczeństwa. Ale jest maksymalnie niepraktyczny. Z UAC-em jest trochę jak z polskim prawem – świetne na papierze, badziewne w zastosowaniu.

Śmiechu warty jest dla mnie przykaz z komentarza gt: ~naucz się UACA-a, pokochaj go albo przynajmniej toleruj~. Nie mam zamiaru tolerować użytkowego szajsu. Dobrze, że mogę go wyłączyć, bo niewyłączalny UAC byłby sporą zachętą do potraktowania Windowsa jako zło konieczne i migracji do konkurencji.

Waldimen
Waldimen
11 years ago

UAC potrafi być czasami upierdliwy, niestety często tak jest że security jest upierdliwe dla deweloperów.
Automatyzuje sobie pewne czynności na komputerze poprzez skrypty PowerShella i często wymagają one uprawnień Administratora. Obchodzę to poprzez tworzenie Scheduled Tasks w Windows i zaznaczenie opcji “Run with highest privileges”

Nie zdecydowałem się jednak wyłączyć UAC, ponieważ po pierwsze używam niektórych aplikacji z Windows Store, a poza tym to jednak trochę boję się o bezpieczeństwo.

Na szczęście nie pracuje z projektami takimi że Visual Studio muszę uruchamiać jako Administrator.

PiotrB
11 years ago

Ja popieram procenta wszystkimi czterema kończynami i z całych sił, wyłączenie UAC jest dla mnie na liście zaraz po instalacji firefoksa. Środowisko pracy ma być dla mnie wygodne. Czy naprawdę komputer do pracy służy wam do oglądania pornoli i podejrzanych stron. A nawet jeśli to róbcie backup, z innych względów też się przyda. A już czepialstwo o to że wciska się nie enter tylko alt+Y to gruba przesada. Procent wyraził moim zdaniem opinię większości developerów (wszystkick, których znam i szanuję również), a sianiem FUD jest właśnie oskarżanie ich o niedouczenie.

Jakub Gwóźdź
Jakub Gwóźdź
11 years ago

Oj nie… To perspektywa doświadczonego programisty od “question authority” wannabe, który myśli, że wie lepiej różni się dość drastycznie.

To pozwolę sobie stwierdzić jako człowiek, który kiedyś tam przez 9 lat rzeźbił w security w Windowsach, począwszy od NT 4.0, a skończywszy na Win7, między innymi w Winlogonie.

Heh, właśnie poczułem się jak Hołowczyc mędrkujący o tym, żeby zapinać pasy i nie jeździć po pijaku :)

PiotrB
11 years ago

Co ma Twoje doświadczenie do braku wygody kogoś kto doskonale rozumie zagrożenia i UAC mu naprawdę w niczym nie pomoże. Licytowanie doświadczeniem nie jest argumentem. Zawsze się znajdzie ktoś z większym.

Co najwyżej Hołowczyc piszący o konieczności posiadania 14 zamków w maluchu.

Tom
Tom
11 years ago

Chciałbym wypisać się z subskrypcji komentarzy, jednak po kliknięciu na odnośnik “Manage your subscriptions” na dole strony przenosi na stronę, która nie istnieje (http://www.maciejaniserowicz.com/comment-subscriptions).

Natomiast…
Próba skontaktowania się z autorem strony za pomocą zakładki “Kontakt” kończyła się wyświetleniem komunikatu: Failed to send your message. Please try later or contact the administrator by another method.

Proszę o weryfikację w/w problemow bo dostaję spam na pocztę a nie mam możliwości tego wyłączyć.
Aktualnie subskrybuję ten wpis (Win8 i UAC).

Janek
Janek
11 years ago

Sledzilem twojego bloga od dluzeszego czasu i przeczytalem na nim kilka ciekawych postow, ale uwazam, ze ten wpis Cie kompromituje.

Zla slawa windowsowych aplikacji wiaze sie z faktem, ze piszac programy na ta platforme jest sie “zbyt produktywnym”. Wszedobylskie sa “designery”, “data source’y” i kontrolki. Naduzywanie tych “dobrodziejstw” moze prowadzic niezbyt dobrze zaprojektowanej aplikacji.

UAC ma za zadanie uchronic Cie przed samym soba(podobnie jak Unit Testy). Moze wygodne jest wylaczenie go(podobnie jak praca jako root na Linuxie), ale trzeba miec swiadomosc, ze to jest zagrozenie

Kajtek
Kajtek
11 years ago
Reply to  Janek

@Janek: wytłumacz w jaki sposób te ‘dezajnery’ i ‘dejta sorsy’ wpływają na złe zaprojektowanie aplikacji?? o.O

Janek
Janek
11 years ago

Prowadza do pomieszania warstw prezentacji, biznesowej i danych

3ion
3ion
11 years ago

Powyższa dyskusja to dyskusja pomiedzy użytkownikami systemu (win) i aplikacji (VS), a bezpiecznikami, którzy zęby zjedli na tym, do czego może prowadzić omijanie zabezpieczeń. Moja prawda jest taka, że dopóki zabezpieczenia są totalnie nieergonomiczne, to je wyłączam, i staram się mitygować zagrożenie w inny sposób (nie wchodzę na podejrzane strony na koncie dev).

U na s w firmie mamy wysoki poziom zabezpieczeń: wymuszone długie hasła, wymuszona zmiana co miesiąc, musi być duża i mała litera, cyfra i znak specjalny, hasła unikalne. I jeden drobiazg: mam około 20 różnych haseł (Unix, PC, Lotus, różne dziwne systemy). Jaki jest efekt? Bezpiecznicy zadowoleni z korporacyjnych procedur, i użytkownicy z żółtymi karteczkami z listą haseł, albo też hasła typu: Q1W2E3R4_%. Inaczej nie da się żyć.

3ion
3ion
11 years ago

Coś mi wycięło z posta. Miało być: Hasła typu: Q1W2E3R4_%_miesiąć_dzień

Sonya Y. Leon
11 years ago

Tak, jak piszą poprzednicy: dokładnie to samo dotyczy Windowsa, przeciętny Kowalski wie, jak komputer włączyć, jak wyłączyć, i jak odpalić programy, które używa. Zdarzają się nawet tacy, którzy są w stanie zainstalować program z płytki czy z sieci, ale na tym możliwości tych przeciętnych się kończą, kiedy cokolwiek się wysypie, łapią za słuchawkę, i dzwonią do tego, co im tego komputra konfigurował. A który system podziała dłużej? Śmiem twierdzić, że Linux, nie dlatego, że jestem fanatykiem Linuksa (w tym złym znaczeniu), a z prostego powodu: niedoświadczony użytkownik z pełnymi uprawnieniami to jak dziecko z żyletką, a prawda jest taka, że pod Windą ogromna większość pracuje na koncie z pełnymi uprawnieniami. Pal licho, jeśli jest to użytkownik, który wie co robi, ale co, jeśli jest to ów ‘przeciętny Kowalski’? Przy tym zdarza się, że jakiś program czy gra do uruchomienia wymaga uprawnień administratora, i tego obejść się na dobrą sprawę nie da. Tymczasem w Linuksie konto zwykłego użytkownika spokojnie się sprawdza, i można miesiącami nie logować się na roota, co więcej, jeśli wspomniany Kowalski dysponuje łączem ze stałym IP, ew. wspomożemy się jakimś NoIP.com, czy innym tego typu, nie będziemy musieli ruszyć zadka z domu, by o taki system zadbać, a nawet pomóc w przypadku wysypki, wystarczy zwykłe SSH. Zrób to samo przez zdalny pulpit w Windzie, powodzenia. Podsumowując, system przeciętnego Kowalskiego jest tak dobry, jak osoba, która mu ten system stawiała. Jeśli to jakiś dzieciak, który potrafi postawić Windę i zainstalować Simsy, system i tak nie podziała za długo, a jak się wysypie, to format (przecież jest dobry na wszystko, nie? :P), jeśli natomiast będzie to ktoś, kto się na temacie zna, i przyłoży się do konfiguracji, system będzie działał, niezależnie od tego, czy to Windows czy Linux. Pozostaje kwestia, ile pracy to będzie wymagało, ale to już zależy od umiejętności i preferencji.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również