недеља, 27. мај 2012.

Windows registry







Windows Registry je centralna baza operativnih sistema familije Windows, koja sadrži krucijalne sistemske i programske podatke i od koje zavisi celokupno funkcionisanje sistema i instaliranih aplikacija. Nebriga o ovoj bazi može kompromitovati stabilnost i pouzdanost operativnog sistema, ali sa druge strane, preterano insistiranje na održavanju baze najčešće ne proizvodi ništa osim pukog gubitka vremena korisnika. Pretresimo ovu temu malo detaljnije…

Na operativnim sistemima proisteklim iz NT familije, kao što su Windows XP, Vista i Windows 7, Registry je raspodeljen u nekoliko fajlova. Sistemska podešavanja nalaze se u folderu C:\Windows\System32\Config (nezavisno od toga da li koristite 32-bitni ili 64-bitni operativni sistem), dok se podešavanja u vezi sa konkretnim korisnikom nalaze u fajlu NTUSER.DAT lociranom u korisničkom folderu (C:\Users\ImeKorisnika). S obzirom da su u pitanju binarni fajlovi, njihovu strukturu nema smisla pregledati pomoću nekog editora, već za to postoji ugrađeni Registry Editor (Start -> Run -> Regedit). Ovo naravno nije jedini način za pregledanje i iščitavanje Registry baze, već Windows programima nudi odgovarajuće funkcije kojima mogu otvarati Registry, pregledati sadržaj i unositi izmene (naravno, pod uslovom da korisnik koji pokreće takav program ima podešene odgovarajuće privilegije).


                                             Editor (Start -> Run -> Regedit). 

Kao što vidimo, Registy je podeljen na nekoliko korenih ključeva karakterističnih imena. Prefiks „H“ je skraćeno od Hive, što bukvalno prevedeno znači košnica, a u ovom slučaju simbolizuje veliku grupu podključeva. Kao što smo rekli, podešavanja za svakog korisnika čuvaju se u NTUSER.DAT, a za korisnika koji je trenutno ulogovan i otvorio je Registry Editor, vrednosti u podgrani HKEY_CURRENT_USER odgovaraće podacima iz njegovog NTUSER.DAT fajla.



Ovi osnovni ključevi služe za najrazličitije sistemske namene. Recimo, CLASSES_ROOT (između ostalog) sadrži definisane tipove fajlova, ekstenzije fajlova asocirane sa tipovima, komande u kontekstnom meniju koji se dobija desnim klikom na neki fajl i slično. CURRENT_CONFIG sadrži podešavanja sistema u pogledu hardvera (prijavljeni uređaji, dodeljeni drajveri i slično), dok instalirani programi svoja podešavanja najčešće upisuju u LOCAL_MACHINE\Software, kada su u pitanju podešavanja na „globalnom“ nivou, odnosno za sve korisnike, ili u CURRENT_USER\Software, ako se radi o podešavanjima za trenutno ulogovanog korisnika koji je i instalirao program.

Svaki ključ (predstavljen sličicom klasičnog foldera u levom delu Editora), osim podključeva, može sadržati i konkretne podatke. Tipični tipovi podataka su niz znakova (string), niz bajtova odnosno binarnih vrednosti, i celobrojna vrednost u 32-bitnoj ili 64-bitnoj širini. Celobrojne vrednosti se ovde nazivaju espektivno DWORD i QWORD, što potiče iz programerskog žargona.

Na x86 računarima, bajt je tradicionalno 8 bita, 16-bitna vrednost je takozvana reč (word) što vuče korene još od 286 računara koji su imali 16-bitne registre; 32-bitna vrednost je „double word“ (DWORD), a 64-bitna „quadruple word“ (QWORD). Ovo navodimo čisto da biste shvatili da je Registry Editor alatka koju su pisali programeri za programere, tako da nije retkost što se koriste „neprevedeni“ pojmovi, već se podrazumeva da imate makar rudimentarno poznavanje istih ako se već uhvatite dubokog čačkanja sistemskih podešavanja.

Iako prosečan korisnik gotovo nikad neće imati potrebu da ručno menja podatke preko Registry Editora, postoji nekoliko ključeva koje treba poznavati jer se njihovom modifikacijom na brzinu mogu rešiti tipični problemi, kada pri ruci nisu odgovarajući alati. Recimo, LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\Uninstall je naročito interesantan jer sadrži listu instaliranih aplikacija (ono što vidite u Control Panel -> Add/Remove Programs, odnosno Programs and Features na Visti i sedmici).

Ako imate problema sa deinstalacijom nekog programa, a ne možete ga reinstalirati jer setup prepoznaje da program već postoji u listi instaliranih aplikacija, često je dovoljno samo obrisati odgovarajući podključ iz ključa Uninstall, čime se omogućava ponovna ispravna instalacija. Takođe, ključ CurrentVersion\Run sadrži programe koji će se pokrenuti sa podizanjem sistema (nezavisno od ulogovanog korisnika), a RunOnce programe koji će se pokrenuti samo posle sledećeg restarta, nakon čega će vrednosti automatski biti obrisane. Ipak, specijalizovani alati dobro poznaju strukturu Registry baze i znaju koje vrednosti gde tražiti, tako da će korisnik izuzetno retko imati potrebu da ovde išta ručno menja.


Image result for CCleaner


Održavanje Registry baze

Registry baza u svom konceptu predstavlja sjajnu zamisao. Na ovaj način se programima omogućava da svoje podatke i podešavanja čuvaju na standardnom mestu umesto u konfiguracionim fajlovima, a takođe, upravo zbog postojanja Registry baze bilo je moguće izvesti neke tehnologije u Windowsu, među kojima su COM i .NET, a koje bi bilo jako problematično izvesti da je sve ostalo na konfiguracionim fajlovima razbacanim po sistemskim folderima.

Sa druge strane, slaba zaštita sistemskih komponenti u ranijim verzijama Windowsa predstavljala je ozbiljan problem, jer su svaki program mogao sa upisuje praktično šta hoće u Registry, čime su otvorena „vrata pakla“. Maliciozni programi su mogli da se ubacuju u startup listu, da menjaju asocijacije tipova fajlova, brišu sistemske ključeve i prave svakakvu štetu na sistemu. Microsoft je iz verzije u verziju Windowsa pojačavao mehanizme za zaštitu baze (recimo, kreiranjem System Restore tačke, automatski će biti sačuvano stanje baze u tom trenutku, a User Account Control sprečiće sumnjive upise po sistemskim ključevima), međutim problem je do današnjeg dana ostao prisutan, doduše u daleko manjoj meri nego ranije.





Pre nego što se pozabavimo alatima za održavanje Registry baze, treba znati da je na 64-bitnim verzijama Windowsa potrebno koristiti 64-bitne verzije alata za najbolje rezultate. Razlog je taj što 64-bitni Windowsi imaju u sebi razne mehanizme za poboljšanje kompatibilnosti, odnosno neometanog rada 32-bitnih aplikacija. Jedan od takvih mehanizama je transprentno remapiranje određenih sistemskih ključeva. Recimo, ako 32-bitni program pokuša da pristupi ključu HKEY_LOCAL_MACHINE\Software, svi pozivi će „nečujno“ biti preusmeravani u Software\Wow6432Node.

Na taj način su razdvojena podešavanja za 32-bitne i 64-bitne programe, s tim što ovi prvi sve vreme misle da rade direktno sa ključem Software na 32-bitnom sistemu. Za njih ključ Wow6432Node uopšte nije vidljiv niti mu mogu pristupiti. Zato, ako sa 32-bitnim alatom pokušate da obrađujete Registry bazu na 64-bitnom sistemu, problemi su sasvim izvesni jer program neće moći da pristupa bazi neometano i direktno. Srećom, svi noviji alati u svojim instalacionim paketima sadrže i 32-bitnu i 64-bitnu verziju programa, a korišćenje zastarelih alata koji dugo nisu osvežavani treba izbegavati.
Interna fragmentacija Registry baze

Prvi problem sa kojim se najčešće susrećemo jeste interna fragmentacija baze. Pritom ne mislimo samo na fragmentaciju fajlova u kojima se čuvaju podaci u Registry bazi, već na „razbacanost“ samih podataka u strukturnoj hijerarhiji unutar baze zbog čestih brisanja i izmena vrednosti. Postoje razni programi koji to sređuju na vrlo jednostavan način – prođu kroz sve ključeve u hijerarhiji i prepišu strukturu u nove fajlove, dobivši tako bazu čija interna struktura odgovara redosledu koji se vidi u Registry Editoru. Koristan program za tako nešto dugo je bio NT Registry Optimizer koji besprekorno radi na svim 32-bitnim Windowsima familije NT, ali kako se radi o 32-bitnoj aplikaciji, nije preporučljivo koristiti ga na 64-bitnim sistemima jer učinak neće biti adekvatan.

Od novijih alata, naša preporuka išla bi programu Auslogic Registry Defrag, koji nažalost nije besplatan, ali dobro radi posao i podržava kako 32-bitne, tako i 64-bitne Windowse od XP-a naovamo.

Defragmentaciju Registry baze ne treba vršiti previše često, jer se podaci u njoj stalno menjaju i dopunjuju – već posle prvog restarta računara, sadržaj baze biće (neznatno) izmenjen jer Windows koristi brojne ključeve za skladištenje tekućih podataka, tako da svakodnevna defragmentacija prosto nema smisla. Nju treba vršiti u većim razmacima, recimo jednom u šest meseci, eventualno češće ako instalirate i deinstalirate mnogo programa.

Čišćenje i popravka Registry baze






S obzirom da Registry predstavlja „svačije dvorište“, nije neobično da podaci u njoj budu pogrešni – recimo, asocijacija nekog tipa fajla upućuje na nepostojeći program koji bi trebalo da otvori taj tip fajla, lokacije deljenih DLL biblioteka upućuju na nepostojeće fajlove i slično. Zato postoje alati koji dubinski skeniraju Registry bazu i, u najprostijoj varijanti, brišu pogrešne ključeve, a u složenijoj, pomoću raznih algoritama pokušavaju da pronađu odgovarajuće vrednosti na osnovu drugih podataka iz baze.
U teoriji zvuči sjajno, a u praksi nije. Neretko se dešava da ovakvi programi naprave više štete nego koristi a sve u najboljoj nameri, tako da ne nasedajte na šarene reklame na sajtovima koje obećavaju duplo brži rad računara i slično, već se držite programa skromnijih „kapaciteta“ koji se neće praviti mnogo pametni, ali je zato daleko manja verovatnoća da nastane neka šteta. Umesto nebrojeno alata sa zvučnim reklamama, preporuka autora ovih redova je krajnje konzervativna i ide univerzalnom CCleaneru koji sadrži i modul za čišćenje baze i koji nikad do sad nije napravio probleme.

Ovo je naravno samo preporuka – niko vas ne sprečava da koristite neke od temeljnijih alata, ali budite spremni na rizike koje takve operacije nose. U krajnjem slučaju, možete uhvatiti stanje Registry baze koristeći funkciju System Restore ugrađenu u Windows, a onda opravljati Registry bez bojazni da nešto krene po zlu.

Isto kao i kod defragmentacije, ni svakodnevno skeniranje i čišćenje baze nema mnogo smisla. Na prvom mestu, popravka baze proizvešće novu fragmentaciju podataka (zato je poželjno nakon popravke pokrenuti alatku za Registry defragmentaciju). Na drugom mestu, Registry sadrži desetine ili stotine hiljada ključeva i vrednosti i prosto je nemoguće da sve uvek bude 100% cakum-pakum. Zato sitnije greške koje programi za čišćenje budu prijavljivali prosto ignorišite, a popravku vršite na nekoliko meseci, jer nema potrebe to raditi češće.
Sa druge strane, skeniranje i popravka Registry baze često su izuzetno korisni kao poslednji potez pre reinstalacije sistema, jer pravilno izvedena popravka baze, brisanje nepotrebnih fajlova i defragmentacija Registry baze i celog hard diska mogu da dignu sistem iz stanja poluupotrebljivosti u stanje blisko sveže instaliranom sistemu.
( Izvor: Benchmark )


Нема коментара:

Постави коментар