Windowsi register

From ICO wiki
Revision as of 23:17, 12 October 2010 by Rkorgmaa (talk | contribs)
Jump to navigationJump to search

Tutvustus

Windowsi register on hierarhiline tsentraal andmebaas, kus hoiustatakse vajalikku informatsiooni süsteemi konfigureerimiseks ühele või enamale kasutajale, rakendustele või riistvaralistele seadmetele. Register sisaldab endas informatsiooni, mida Windows pidevalt jälgib operatsiooni käigus, nagu iga kasutaja profiile, masinasse salvestatud programme ja nende poolt salvestatavate faili tüüpidega, atrubuudilehe sätteid kaustade ja rakenduste ikoone, arvutis oleva riistvara olemas olu ja portide kasutust. Register asendab enamus tekstil baseeruvaid .ini faile mida kasutati 3.x ja MS-DOS konfiguratsiooni failides, nagu Autoexec.bat ja Config.sys.

Põhimõte

.INI failid hoiustasid iga rakenduse kasutaja sätteid eraldi failsis, kui Windowsi register hoiustab kogu rakenduse sätted standartses vormis ühes keskses varamus. See pakub mõningaid eeliseid INI failide üle. Kuna registrisse sisenemine ei vaja liigendamist, võib kirjutamine/lugemine olla kiirem kui INI faili. Lisaks saab raskelt sisestatud andmeid talletada registris erinevalt INI faili hoiustatud tekst informatsiooni asemel. Kasutaja põhiseid registri sätteid laetakse pigem kasutaja-eriomaselt rajalt kui read-only süsteemi asukohast, lubades mitmeid kasutajaid jagada sama masinat ja lubab programmidel töötada väiksema privileegiga kasutajate all. Varukoopiate ja nende taastamine on lihtsustadud, kuna registrile on võimalik ligi pääseda üle võrgu kasutades Remote Management/supporti. Meeles peab pidama, et Remote regisrty teenus peab jooksna ja tulemüüri seaded peavad seda lubama. Registrer omab funktsioone, mis parandavad süsteemi terviklikkust, kuna register on ülesehitatud kui andmebaas ja pakub andmebaasilikke funktsioone nagu atomic updates. Kui kaks protsessi üritavad uuendada sama registri väärtust samal ajal, siis ühe protsessi muutus ületab teist ning üleüldine andme terviklikkus jääb paika. Windows Vista ja Windows 7 pakuvad kandelisi uuendusi registrisse, pikendades aatomlikke garantiisid üle mitme võtme või/ja väärtuse muutuse koos traditsioonilise commit-abort semantikate.

Ülesehitus

Register sisaldab endas kahte põhi elementi: võti ja väärtus. Registri võtmed on kaustadega sarnased - lisaks väärtustele saab iga võti omada alamvõtit, mis võib veel omakord omandada alamvõtmeid jne. Võtmeid refereeritakse süntaksiga Windowsi viite nimedega sarnaselt, kasutades kaldkriipse hierarhia tasandite märkimiseks. Iga alamvõtmel on kohustuslik nimi mis on täidetud string ja millel ei tohi sisalduda ühtegi kaldkriipsu või null märki ning mille tähe suurus on tähtsusetu.

Registris on seitse eelmääratud root võtit:


  • HKEY_LOCAL_MACHINE ehk HKLM
  • HKEY_CURRENT_CONFIG ehk HKCC (ainult Windows 9x/ME ja NT-baseeruvatel Windowsi versioonidel)
  • HKEY_CLASSES_ROOT ehk HKCR
  • HKEY_CURRENT_USER ehk HKCU
  • HKEY_USERS ehk HKU
  • HKEY_PERFORMANCE_DATA (ainult NT-baseeruvatel Windowsi versioonidel, kuid nähtamatu Windows Registry Editoris)
  • HKEY_DYN_DATA (ainult Windows 9x/ME, ja nähtav Windows Registry Editoris)


Nagu teiste failide ja teenustega Windowsis on ka kõiki registri võtmeid võimalik piirata Accsess Control listiga(ACL). Erinevad kasutajad, programmid, teenused või eemalseisvad süsteemid võivad näha vaid mõningaid hierarhia osasi või erinevaid hierarhiaid samalt root võtmetelt.

Registri väärtused on nimi/andmed paar, mis on talletatud võtmesse. Väärtustele on viidatud eraldi registri võtmetes ning kõigil hoiustatud registri väärtustel on unikaalne nimi, mille tähe suurus ei ole oluline. Registri väärtuste nimedes võivad esineda kaldkriipse, kuid see teeb nende keeruliseks nende eristamise võtmete radadest kui kasutada mõnda legacy Windows Registry API funktsioone.

Igal väärtus suudab talletada omavolilist infot, millel on varieeruv pikkus ja kodeering, aga mis on seostatud sümboolse tüübiga (defineeritud kui numbriline konstant) defineerides, kuidas infot sõeluda.. Standardit tüübid on:

Standardsed registri väärtuste tüübid
Tüübi ID Sümboolne tüübi nimi Tähendus ja salvestatud andme kodeering registri väärtuses
0 REG_NONE No type (the stored value, if any)
1 REG_SZ A string value, normally stored and exposed in UTF-16LE (when using the Unicode version of Win32 API functions), usually terminated by a null character
2 REG_EXPAND_SZ An "expandable" string value that can contain environment variables, normally stored and exposed in UTF-16LE, usually terminated by a null character
3 REG_BINARY Binary data (any arbitrary data)
4 REG_DWORD / REG_DWORD_LITTLE_ENDIAN A DWORD value, a 32-bit unsigned integer (numbers between 0 and 4,294,967,295 [232 – 1]) (little-endian)
5 REG_DWORD_BIG_ENDIAN A DWORD value, a 32-bit unsigned integer (numbers between 0 and 4,294,967,295 [232 – 1]) (big-endian)
6 REG_LINK A symbolic link (UNICODE) to another registry key, specifying a root key and the path to the target key
7 REG_MULTI_SZ A multi-string value, which is an ordered list of non-empty strings, normally stored and exposed in UTF-16LE, each one terminated by a null character, the list being normally terminated by a second null character.
8 REG_RESOURCE_LIST A resource list (used by the Plug-n-Play hardware enumeration and configuration)
9 REG_FULL_RESOURCE_DESCRIPTOR A resource descriptor (used by the Plug-n-Play hardware enumeration and configuration)
10 REG_RESOURCE_REQUIREMENTS_LIST A resource requirements list (used by the Plug-n-Play hardware enumeration and configuration)
11 REG_QWORD / REG_QWORD_LITTLE_ENDIAN A QWORD value, a 64-bit integer (either big- or little-endian, or unspecified) (Introduced in Windows 2000)

Hives