artykuły

Rejestr Windows

7:47
śro, 31 październik 2001
Każdy program, każdy sterownik, każda gra, każdy kodek, każdy instalator pozostawia w rejestrze mnóstwo śladów, które często nie zostają usunięte. Zapchanie rejestru jest najczęstsza przyczyną spowolnienia systemu. Artykuł opisuje jak przeciwdziałać zaśmiecaniu i usuwać śmieci z rejestru, opisuje sposoby na uratowanie uszkodzonego rejestru systemu, odkrywa przed użytkownikiem nowe możliwości konfiguracji systemu. Do pobrania dostępny jest również przewodnik po rejestrze Windows zawierający setki udokumentowanych opcji, niedostępnych z poziomu systemu dla Windows NT (2000,XP) i Windows 9x.

Wstęp

Rejestr systemu Windows to miejsce gdzie system przechowuje informacje o poszczególnych programach, sprzęcie, sterownikach, jak również indywidualne ustawienia interfejsu i innych podzespołów. Większość instalowanych przez Ciebie programów zostawia tam mnóstwo wpisów (tzw. kluczy i wartości), umożliwiających im prawidłowe funkcjonowanie, przechowywanie ustawień użytkownika, czy w końcu integracje z systemem operacyjnym (rejestracja nowych rozszerzeń plików i odpowiadającym ich aplikacji). Informacje są przechowywane w bazie danych (Rejestrze) o strukturze drzewa składające się z kluczy i ich podkluczy, gałęzi oraz wpisów wartości (patrz Tabela 1.1). Do ich edycji służy systemowy programregedit.exezwany "Edytorem rejestru" - to zaawansowane narzędzie, służące do wyświetlania i zmieniania ustawień Rejestru systemu. Chociaż Edytor rejestru pozwala na sprawdzanie i modyfikowanie ustawień Rejestru, zwykle nie jest to konieczne, a dokonywanie nieprawidłowych zmian może uszkodzić system. Zaawansowany użytkownik, który jest przygotowany do edytowania i przywracania Rejestru, może korzystać z Edytora rejestru bez obaw i wykonywać przy jego użyciu takie zadania, jak usuwanie podwójnych wpisów czy usuwanie wpisów odinstalowanych lub usuniętych programów, które nie zostały usunięte przez programy deinstalacyjne (niestety bardzo często się to zdarza).

Tabela 1.1 - Główne klucze rejestru
Pełna nazwa klucza Skrót nazwy
HKEY_CLASSES_ROOT HKCR
HKEY_CURRENT_USER HKCU
HKEY_LOCAL_MACHINE HKLM
HKEY_USERS HKU
HKEY_CURRENT_CONFIG HKCC

O ile w systemach z rodziny Windows 9x rejestr był zlokalizowany w dwóch plikach: SYSTEM.DAT i USER.DAT o tyle w systemach z rodziny NT (jak Windows XP) jest już nieco gorzej. W tych systemach pliki w których przechowywany jest rejestr porozrzucane są po całej partycji systemowej (Tabela 1.2).

Tabela 1.2 - Pliki w których przechowywany jest rejestr w systemach rodziny NT
Nazwy plików Opis zawartości
system,system.sav,system.log HKLM\SYSTEM
sam,sam.log HKLM\SECURITY\SAM
software,software.sav,software.log HKLM\SOFTWARE, HKCR
security,security.log HKLM\SECURITY
default HKU\.DEFAULT
C:\Documents and settings\<Nazwa użytkownika>\ntuser.dat i ntuser.dat.log HKCU, HKU\<identyfikator użytkownika (SID)>

Musisz pamiętać, że zmieniając zawartość rejestru zawsze narażasz na szwank system, dlatego chcąc zmodyfikować jakiś klucz zawsze powinienneś zadbać o wykonanie kopii rejestru (na wszelki wypadek). Za chwilę dowiesz się jak to zrobić.
Nie należy dokonywać edycji Rejestru o ile nie jest to konieczne ponieważ czasem nawet najmniejszy błąd może uniemożliwić poprawne funkcjonowanie systemu. Jeśli tak się stało będziesz zmuszony skorzystać z opcji przywracania systemu (jeśli jesteś użytkownikiem Windows Me,NT,XP) lub opcji przywracania rejestru w systemach (Windows 9x). Aby przywrócić kopię rejestru z czasów gdy system jeszcze poprawnie się uruchamiał należy w linii komend DOS'a wpisać polecenie:scanreg /restoreWykonanie tej procedury przywróci Rejestr do stanu, w jakim znajdował się w momencie ostatniego prawidłowego uruchomienia komputera.

Zmniejszanie objętości rejestru

Jak wspomniano wcześniej, instalatory programów, sterowniki, czy wreszcie same programy - wszystkie zostawiają w rejestrze ślady po swoim użytkowaniu. Przykładowo instalatory zapisują tam często informacje takie jak ścieżka w której została zainstalowana aplikacja, jej wersja, ścieżka do aplikacji deinstalującej, ścieżka do pliku z raportem instalacji - wszystko dlatego aby użytkownik mógł łatwo usunąć program przez aplet "Dodaj/Usuń programy" Panelu sterowania.
Nierzadko, producenci oprogramowania, tworząc kompilację instalacji nie dodają do niej informacji o tym gdzie program zapisuje swoje ustawienia w rejestrze systemu, przez co później, przy deinstalacji programu, aplikacja deinstalująca nie usunie tych wpisów.
Paradoksalnie, nawet jeśli twórca instalatora doda taką informacje do kompilacji instalacyjnej, przy usuwaniu aplikacji, często z winy samych użytkowników, w rejestrze pozostają nichciane wpisy skutecznie zwiększając jego objętość. Co złego robią użytkownicy? Tu pojawia się odpowiedź na pytanie - dlaczego należy korzystać z deinstalatora aplikacji (jeśli jest on dołączony)?
Użytkownicy którzy usuwają programy, usuwając po prostu folder w którym są przechowywane nie dają możliwości programowi deinstalacyjnemu na usunięcie niepotrzebnych już wpisów w rejestrze, przez co objętość rejestru rośnie, w miarę użytkowania systemu, skutecznie go spowalniając.
Nasuwa się pytanie, co możemy zrobić by zmniejszyć objętość rejestru? Zarówno użytkownicy którzy korzystają z deinstalatorów, jak i Ci drudzy, korzystający z klawisza Delete, mają problem ;) Przy czym ci pierwsi mają mniejszy problem niż Ci drudzy ;)
Sprawdźmy więc jak duży jest twój rejestr. Aby to uczynić będziemy musieli zrobić jego obraz (kopię) i zapisać ją na dysk. Do tego celu potrzebna nam będzie systemowa konsola (wiersz poleceń), lub okienko "Uruchom". Wpisujemy takie oto magiczne polecenie (które będzie objaśnione w dalszej części artykułu:regedit /e c:\kopia.regPo wykonaniu tego polecenia, na dysku C: zostanie zapisana kopia rejestru w postaci pliku z rozszerzeniem .reg. Teraz łatwo już sprawdzić ile zajmuje nasz rejestr. Taaak... u mnie 92MB. Pora go oczyścić! Jest mnóstwo programów do oczyszczania rejestru, osobiście korzystam z usług aplikacji EasyCleaner firmy ToniArts, jednak wbrew powszechnej opinii nie jest ona najlepsza pod względem skuteczności. Powiem więcej, jest jedną z najmniej skutecznych aplikacji w swojej dziedzinie - ma jednak kilka innych opcji do których przywykłem (jak obrazowanie objętości katalogów i plików na dysku w postaci wykresu kołowego, bardzo przydatna rzecz). Aplikacje tego typu usuwają nieużywane gałęzie pozostawione przez odinstalowane programy, kodeki czy sterowniki, ścieżki do ostatnio otwieranych dokumentów, listy ostatnio wpisywanych poleceń, itp... .
Poniżej lista kilku aplikacji spisujących się nieco lepiej niż popularny EasyCleaner:

  • RegVac (shareware) - w pełni funkcjonalna wersja shareware niezwykle denerwującego programu RegVac wydającego mnóstwo dźwięków przy wyszukiwaniu zbędnych wpisów. Progam jest jednak skuteczny, znalazł blisko 13 razy więcej śmieci niż EasyCleaner

Eksport i import rejestru do/z pliku

Tabela 1.3 - Parametry programu regedit.exe
Parametr Opis
regedit /e c:\kopia.reg Exportuje rejestr do pliku
regedit /c c:\kopia.reg Importuje rejestr z pliku.

Tak, należą się małe wyjaśnienia. Otóż parametry dodane do instrukcji regedit odpowiadają określonym czynnościom:

Parametr Instrukcja (do parametru) Czynność /e	Ścieżka docelowa określająca katalog i nazwę pliku kopii rejestru

Może ona być następująca: C:\Rejestry\7.10.2001.reg, gdzie '7.10.2001' to data jego stworzenia (Ja tak właśnie nazywam kopie, ponieważ łatwiej jest mi określić kiedy została stworzona i jakie zawiera informacje). Może to być na przykład inna nazwa (byle bez spacji - dotyczy systemów Win9x - spacje utrudniają przywrócenie rejestru spod systemu DOS), np. 'moja_kopia.reg'. Parametr /e dodaje się do słówka regedit by zapisać kopię rejestru (wyeksportować) do innego pliku. Po tym parametrze następuje ścieżka do pliku, który będzie stworzony.
/c Parametr ten importuje wyeksportowaną wcześniej kopię rejestru. Możemy go użyć np. regedit /c C:\Rejestry\7.10.2001.reg, co oznacza import pliku określonego przez ścieżkę do rejestru. Parametr /c dodaje się do słówka regedit by odczytać zapisaną wcześniej kopię rejestru. Po tym parametrze następuje ścieżka do pliku, który będzie odczytany.
Podsumowując powyższą tabelę - możemy powiedzieć że: dodanie parametru /e do słówka regedit spowoduje zapisanie kopii rejestru w danym katalogu, natomiast dodanie parametru /c spowoduje wczytanie kopii rejestru z danej lokalizacji i wprowadzenie informacji do rejestru.
W szczególnych przypadkach, gdy Rejestr jest tak uszkodzony, że nie można uruchomić środowiska graficznego, można uruchomić Edytor Rejestru pod kontrolą MS-DOS. Nie jest on, co prawda, wygodny, ale pozwala wyeksportować dane, poprawić je w edytorze tekstu i zaimportować z powrotem. Dla zabezpieczenia się przed popełnionymi wcześniej błędami moża skorzystać nawet z opcji utworzenia Rejestru od nowa.
Składnia polecenia uruchamiającego Edytor pod DOS-em jest następująca:
regedit [/L:system] [/R:user] pliki dołączane regedit [/L:system] [/R:user] /E nowy_plik.reg [klucz] regedit [/L:system] [/R:user] /C nowy_rejestr.reg Poszczególne parametry oznaczają:

  • /L:system - położenie pliku SYSTEM.DAT,
  • /R:user - położenie pliku USER.DAT, pliki dołączane - pliki, których zawartość chcemy dołączyć do Rejestru,
  • /E nowy_plik.reg - nazwa pliku, do którego Rejestr ma być wyeksportowany, klucz - klucz, który ma być wyeksportowany (pominięcie powoduje eksport całości),
  • /C nowy_rejestr.reg - plik, z którego nowy Rejestr ma być utworzony.

Naprawa błędów rejestru w systemach rodziny Windows 9x

Komenda:scanreg /fixzałatwia za nas kupę roboty, mianowicie uruchamia program, który skanuje rejestr i naprawia w nim błędy. Dokładniej mówiąc - sprawdza strukturę rejestru i w razie konieczności przebudowuje go. Program usuwa błędne zapisy i puste bloki danych, co w znacznym stopniu oddziałuje na objętość rejestru, a także na szybkość działania systemu Windows.

Sztuczki z Rejestrem

Windows przechowuje w rejestrze mnóstwo danych, również dane które nie są dostępne (w celu modyfikacji) z poziomu interfejsu systemu. W rejestrze zmienić można wszystko do czego mamy dostęp (Tak! Tu również musimy mieć dostęp do gałęzi aby coś w niej zmienić). Podam teraz kilka przykładów ciekawych modyfikacji pozwalających np. zablokować dostęp właściwości ekranu, a nawet edytora rejestru. Uruchom edytor rejestru (Start/Uruchom lub wciśnij klawisz Windows+R) i wpisz "regedit". Pamiętaj, że aby zmienić jakieś ustawienie systemu przeważnie wystarczy zmienić wartość z 0 na 1. Poniższe wskazówki dotyczą systemów z rodziny Win9x, jednak niektóre z nich powinny zadziałać na systemach z rodziny NT.
Jeśli nie jesteś użytkownikiem systemu Windows 9x, przejdź do zakończenia artykułu w celu uzyskania informacji o umiejscowieniu poszczególnych opcji w rejestrze.

(U siebie nie znalazłem poniższego klucza (Win 98 SE).)

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System

NoDispCPL -- wyłączenie dostępu do właściwości ekranu.
NoDispBackgroundPage -- wyłączenie dostępu do zakładki właściwości ekranu Tło.
NoDispScrSavPage -- wyłączenie dostępu do zakładki właściwości ekranu Wygaszacz ekranu
NoDispAppearancePage -- wyłączenie dostępu do zakładki właściwości ekranu Wygląd.
NoDispSettingsPage -- wyłączenie dostępu do zakładki właściwości ekranu Ustawienia.
NoSecCPL -- wyłączenie dostępu do arkusza właściwości Hasła.
NoPwdPage -- wyłączenie dostępu do zakładki Zmień hasło arkusza Hasła.
NoAdminPage -- wyłączenie dostępu do zakładki Zdalne administrowanie arkusza Hasła.
NoProfilePage -- wyłączenie dostępu do zakładki Profile użytkownika arkusza Hasła.
NoDevMgrPage -- wyłączenie dostępu do zakładki Menedżer urządzeń arkusza System.
NoConfigPage -- wyłączenie dostępu do zakładki Profile sprzętu arkusza System.
NoFileSysPage -- wyłączenie dostępu do arkusza właściwości System plików.
NoVirtMemPage -- wyłączenie dostępu do arkusza właściwości Pamięć wirtualna.
DisableRegistryTools -- wyłączenie dostępu do Edytora Rejestru (UWAGA!!! Jeśli wyłączysz sobie dostęp do rejestru, później trudno będzie zmienić z powrotem tę wartość).


HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Network

NoNetSetup -- wyłączenie dostępu do właściwości sieci.
NoNetSetupIDPage -- wyłączenie dostępu do zakładki właściwości sieci Identyfikacja.
NoNetSetupSecurityPage -- wyłączenie dostępu do zakładki właściwości sieci Kontrola dostępu.
NoFileSharingControl -- brak kontroli nad współużytkowaniem plików.
NoPrintSharingControl -- brak kontroli nad współużytkowaniem drukarek.
NoEntireNetwork -- brak folderu Cała sieć
NoWorkgroupContents -- brak składników grup roboczych w Otoczeniu sieciowym.


HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

NoPrinterTabs -- ukrycie zakładek Ogólne i Szczegóły arkusza właściwości drukarki.
NoDeletePrinter -- brak możliwości usuwania drukarek.
NoAddPrinter -- brak możliwości dodawania drukarek.
NoStartMenuSubFolders -- ukrywa podfoldery menu Start.
NoRun -- brak polecenia Uruchom
NoSetFolders -- brak polecenia Ustawienia w menu Start.
NoSetTaskbar -- brak właściwości paska zadań.
NoFind -- brak polecenia Znajdź.
NoDrives -- brak dostępu do dysków lokalnych (uaktywnienie wymaga podania wartości binarnej zawierającej tyle jedynek, ile kolejnych liter dysków ma zostać ukrytych).
NoNetHood -- brak dostępu do otoczenia sieciowego.
NoDesktop -- brak pulpitu.
NoClose -- brak możliwości zamknięcia Windows.
NoSaveSettings -- wyłączone zachowywanie ustawień przy wyjściu.
RestrictRun (klucz) -- lista dozwolonych aplikacji.

Linki do innych artykułów o tej tematyce

Zakończenie

Systemowy rejestr to olbrzymia baza danych, w której trudno się połapać. Mam nadzieję jednak, że ten artykuł nieco rozjaśnił Wam jego postrzeganie. Obiecałem jeszcze skarb dla użytkowników, którzy nie odnaleźli dla siebie wskazówk w poprzednim paragrafie. Otóż, dawno temu znalazłem cyfrowy przewodnik po rejestrze systemowym (Registry Guide for Windows), opublikowany przez Microsoft. Chciałbym się nim z Wami podzielić. Zarówno użytkownicy systemów rodziny Win 9x jak i systemów z rodziny NT znajdą tam wszystie udokumentowane możliwości modyfikacji zachowania systemu. Prawdziwy skarb!

12345
Rejestr Windows Autor opinii: Czytelnicy, data przesłania: 0

Skomentuj

Aby zamieścić komentarz, proszę włączyć JavaScript - niestety roboty spamujące dają mi niezmiernie popalić.






Komentarze czytelników

    • Gosc
    • czw, 18 wrzesień 2014, 3:02
    • Bardzo interesująco napisane o rejestrze, napewno z porad skorzystam
    • billimalpka
    • śro, 1 kwiecień 2009, 0:50
    • Witam i od razu DZIĘKUJĘ!!
      Nie mam pojęcia, jaką datę ma ten artykuł, ale jest świetnym antidotum, na obecne moje problemy z Win. ;)
      Dzięki serdeczne, tym większe, że jakoś samoistnie, postanowiłem uczyć się jakiegoś jęz. programowania. Myślałem o BASIC, bo podobno Win., wszystkie, są w tym języku napisane.
      Ale może jednak zmienię swoj pierwotny zamiar i będzie to DELPHI??
      N.M.
      Jeszcze raz szczere : DZIĘKI i pozdrawiam :)




      Odp: Nie ma sprawy ;) Bardzo się cieszę, że artykuł się przydaje. Natomiast jeśli chodzi o Windowsy, to ktoś Ci po prostu wcisnął kit z tym Basicem. Choć sam Basic jest językiem przyjemnym i wciąż rozwijanym (Visual Basic for NET), to jednak nie pozwala na przykładowe operacje na żywej pamięci (za pomocą wskaźników). A trzeba jasno powiedzieć, że nawet na platformie NET (gdzie jawnie nie używa się wskaźników - jedynie w blokach unsafe) przydają się one do przyspieszenia obliczeń (np. przetwarzanie obrazów). Natomiast jądro Windows zostało napisany prawie w całości w języku C/C++/Assembler (przeważają C i Assembler - w tym C ma większość - podobno używali Watcom C). Jednak wbudowane oprogramowanie było pisane już w C++, jest teraz przepisywane na platformę .NET (Vista jest hybrydą). Kolejne wersje systemów będą posiadały coraz więcej narzędzi przepisanych na .NET. Jeśli chodzi o wybór języka teraz polecałbym Ci wybór albo Delphi, albo C#. Według mnie nie warto się uczyć teraz C++, ponieważ jeśli byś zobaczył jak jest to kłopotliwy język, jak bardzo sam w sobie zagmatwany i zobaczyłbyś jak wiele jest problemów z wykorzystaniem owej "przenośności" którą język się cieszy to stwierdziłbyś to samo co ja. A co jeśli chodzi o szybkość wykonywania kodu? Prym wiodą Delphi i C++, trochę za nimi jest C#, a gdzieśtam na końcu Java (nie polecam z tego właśnie względu).
Dexter