Prawa w rejestrze

Prawa w rejestrze

  • Comments 3
  • Likes

Mniejsza o szczegóły, ale w pewnej firmie stało się tak, że administrator odebrał uprawnienia w dość istotnej gałęzi rejestru systemu Windows Vista. System postanowił zareagować poważnie i logowanie okazało się niemożliwe. I tu pojawiło się administratorowi pytanie: jak teraz ustawić prawa w rejestrze a konkretnie w gałęzi HKLM\SOFTWARE\Microsoft\cośtam? Odpowiedź "ponownie zainstalować system" jest dobra, ale niekoniecznie najwłaściwsza... Last Known Good nie zadziałało.

Skoro po włączeniu nie da się zalogować, to może nadać prawa w rejestrze offline, czyli na wyłączonym systemie? Postanowiliśmy pójść tą właśnie drogą.

Wszelkie kombinacje z ręcznymi zmianami wewnątrz pliku należy sobie jak najszybciej wyperswadować. Nie tędy droga. Trzeba wziąć inny system, taki na którym logowanie nie jest problemem i podać mu plik z odpowiednią gałęzią rejestru. Oczywiście podać w taki sposób, żeby nie zastąpić oryginalnego, bo tą metodą daleko nie zajdziemy. Teoretycznie możnaby zrobić to metodą przekładania dysków i kopiowania plików, ale w przypadku Windows Vista, mamy do dyspozycji znacznie lepsze rozwiązanie: płytę instalacyjną. Płyta instalacyjna Windows Vista jest przecież typowym LiveCD z którego uruchamia się Windows PE. Można z tej płyty uruchomić komputer i popracować rozmaitymi narzędziami.

Mając więc komputer, w którym należy zmienić prawa w rejestrze, trzeba uruchomić go z instalacyjnej płyty DVD. Pierwszym ekranem jest pytanie o ustawienia regionalne, które nie mają tu większego znaczenia. Na kolejnym ekranie, zamiast rzucającego się w oczy "Install", z niepozornego menu w dolnej części okna, należy wybrać "Repair your computer". Program poszuka systemów na dysku, ale nie ma to większego znaczenia, ponieważ i tak trzeba uruchomić Command Prompt.

Mając Command Prompt, można sprawdzić, czy na dysku C: na pewno leży plik odpowiedzialny za gałąź rejestru. Powinien leżeć w c:\windows\system32\config i nazywa się SOFTWARE bez żadnego rozszerzenia. Windows PE ma swój rejestr i można w nim grzebać dowolnym narzędziem. Potrzebujemy jednak nie edycji rejestru Windows PE, tylko tego, który leży nieużywany na dysku. I tu zaczyna się drobna sztuczka. Otóż do rejestru można podłączać "w locie" całe gałęzie. Należy w takim razie podłączyć plik SOFTWARE. Można to zrobić przy pomocy regedit (to narzędzie jest dostępne w Windows PE), ale wcale nie jest prościej niż z wiersza poleceń. W wierszu poleceń robi się to poleceniem reg LOAD HKLM\naprawa c:\windows\system32\config\software

Gdyby ktoś teraz uruchomił edytor rejestru (można spróbować, choć GUI jest dla mięczaków) to łatwo będzie zauważyć nową gałąź o nazwie "naprawa". W niej znajduje się to wszystko, czego potrzebujemy. Problemem jest tylko mały drobiazg: w systemie Windows PE, regedit nie zawsze umie nadawać prawa. Tak więc jego zastosowanie tu ogranicza się wyłącznie do zaspokajania ewentualnej ciekawości.

Pozostaje nadać prawa z wiersza poleceń. O ile dla plików i folderów nie jest to specjalnie trudne, o tyle w przypadku rejestru, wbudowane w system narzędzia okażą się mniej przydatne. Microsoft zadbał jednak o nas i udostępnił narzędzie subinacl.

Pobiera się je niestety (zupełnie nie rozumiem dlaczego) w formacie MSI. Trzeba je zainstalować na innym komputerze, po czym sam plik subinacl.exe przegrać na pendrive. Taki pendrive można podłączyć do Windows PE i subinacl jest gotowy do użycia.

Składnia polecenia subinacl jest jedyna w swoim rodzaju, ale dla ustawienia uprawnień do gałęzi i podgałęzi rejestru należy wpisać: subinacl /subkeyreg HKEY_LOCAL_MACHINE\naprawa\Microsoft\moja_zepsuta_gałąź
/grant=everyone=F

Podejście takie jest brutalne, bo nadaje wszystkim pełne prawa, co w praktyce może okazać się bardzo niebezpieczne. Niestety jednak Windows PE nie zna kont ani z domeny ani z systemu, który naprawiamy i trzeba posłużyć się jednym z tak zwanych Well Known SIDs. Everyone nadaje się tu bardzo dobrze ponieważ po takim ustawieniu i restarcie komputera logowanie powinno być możliwe. Wystarczy teraz zamknąć okno wiersza poleceń i z menu Windows PE wybrać "Restart".

Oczywiście pierwszą czynnością po zalogowaniu powinno być uruchomienie edytora rejestru i nadanie troszkę mniej liberalnych uprawnień. Można posłużyć się innym działającym komputerem z Windows Vista jako wzorcem.

I działa!

Autor: Grzegorz Tworek [MVP]

Comments
  • A że tak skromnie zapytam, czy nie szybciej i łatwiej by było skorzystać z jakiegoś LiveCD? Cała masa tego w Necie się pałęta.

    I czy przypadkiem SetACL nie jest łudząco podobny do subinacl?

    http://setacl.sourceforge.net/

  • Wystarczy poszukać trochę w necie, a nie podawać jakieś chore rozwiązania. :P

    1. skasować hasło lokalnego administratora i dokonać potrzebnych zmian.

    2. administrator może się zdalnie podłączyć do rejestru lokalnego komputera i zmienić uprawnienia do wybranej gałęzi rejestru.

    3. google 1st :P

  • @amandi: instalka visty jest LiveCD, czemu chcesz korzystać z innego? Pomysł zastosowania SetACL mi się podoba. Subinacl ma dla mnie osobiście tą zaletę, że go używam od lat i zawsze mam pod ręką. A SetACL - nie ;)

    @prs: Wszystko super... tylko co da skasowanie hasła jeżeli system nie chce startować... z hasłem czy bez?

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment