Taigi pradedame:
Kaip jus tikriausiai jau zhinote registre visos Windows programos (net ir patys windowsai) ishsaugo savo kaikuriuos parametrus. Tachiau, kaip tos programos juos ishsaugo ???
Taigi shiame darbe ash norechiau aprashyti registro programavimo pagrindus. Stengiausi laikitys atokiau nuo tokio zhargonizmo kaijp joos rashotie laijshkuoze ir pan =:). Stengiausi, kad shis darbas butu kuo daugiau mokslinio pobudzhio.
Disklaimeris: Shi teksta parashiau grynai mokomaisiais tikslais ir neprisiimu jokios atsakomybes, jeigu naudojant shia literatura nors vienas zhmogus patirs moraliniu ar materialiniu nuostoliu.
Shis failas gali buti laisvai platinamas iki tol, kol kartu su juo bus
minimas autoriaus vardas, bei jis liks nepakeistas.
Achiu.
Turinys:
1. Registras, jo struktura.
2. Pagrindiniai registro skyriai ( HKEYS ) ir ka jie reishkia.
3. Registro irashu tipai ( String, DWord, Binary ).
4. Pradedame programuoti ( Su Delphi 5 ).
5. Idomesnes registro vientos ( ten kur jus hackeriai galesite pridergti
lamoms =:)
1 Registras, jo struktura.
Registras laiko duomenis hierachinio tipo "medyje" (tree). Kiekviena "shakele" medyje yra vadinama "raktu" (key). Kiekvienas toks raktas gali savyje tureti dar po kelis "raktus" arba tureti "irashus" (vadinamus "values"). Kartais netgi vien "rakto" buvimas tam tikroje vietoje yra visa informacija kuria reikia pasiimti programai; kita karta, programa atidaro tam tikra rakta ir pasiima informacija ish irashu esanchiu tame rakte. Vienas raktas gali tureti neribojama kieki irashu, ir irashas gali tureti bet kokia reikshme.
2 Pagrindiniai registro skyriai ( HKEYS ) ir ka jei reishkia.
Turbut pastebejote kaireje registro lango puseje yra 6 didelemis raidemis
pavaidnti skyriai ir visi jie prasideda 4 raidemis HKEY_.... na tai patys
aukshchiausieji registro hierarchijos skyriai (neiskaitykite My Computer,
nes jame nera nieko irashyta). Kiekvienas ish ju turi savo paskirti registr,
kiekviename ish ju saugoma tam tikra informacija: viename programos saugo
savo nustatymus, kitame sistema (Windows), dar kitame vartotojo nustatymai
ir t.t. ir pan.
Taigi chia rashoma, ka kiekvienas skyrius reishkia ir ka jis savyje
"saugo":
HKEY_CLASSES_ROOT: Shiame skyriuje yra saugomi dokumentu tipai (arba klases) ir tu dokumentu savybes susijusios su tu dokumentu tipais. Taip pat nustatymai saugomi shiame skyriuje yra naudojami Windows programu be OLE programu (gal kas nors man parashykite ka tai reishkia).
HKEY_CURRENT_USER: Shiame skyriuje yra saugomi konkretaus vartotojo nustatymai. Shie nustatymai taip pat iskaito ir Windows shell'o kintamuosius, irashus apie programu grupes, splavas, spausdintuvus, tinklo sujungimus, ir programu nustatymus.
HKEY_LOCAL_MACHINE: Shis skyrius saugo fizine kompo bukle, iskaitant duomenis apie kompo magistrale, sistemine atminti, bei instaliuota hardwara ir softwara.
HKEY_USERS: Na shiame skyriuje yra saugoma bendri vartotojo nustatymai, jeigu kompu naudojasi keli zhmones ir atsiranda dar vienas naujas vartotojas.
HKEY_CURRENT_CONFIG: Shitas skyrius yra skirtas saugoti dabartiniam aplinkos sukonfiguravimui ( fontai, interneto nustatymai ir t.t. ir pan.)
HKEY_DYN_DATA: Shitas skyrius saugo tai, ko ash dar neishsiaishkinau =:( sorry...
3. Registro irashu tipai.
STRING: Irashas, kuriame saugoma informacija yra zhodine. Tai gali buti visokie zhodzhiai, keliai (paths) nurodyti iki tam tikru programu ar pagalbiniu failu, kompo pavadinimai, kam registruota programa (!) registracijos numeriai (!!!) ir t.t. ir pan.
BINARY: Irashas, kuriame saugoma informacija yra dvejetainio pavidalo, tai gali buti visokiausi kodai arba nustatymai, kuriems reikia tik dvieju reikshmiu ( 0 ir 1 arba ne ir taip ).
DWORD: Irashas panashus i STRING, tik jame informacija gali buti daug daug ilgesne.
4. Pradedame programuoti.
PASTABA: norintys padaryti ka nors su shiuo komponentu turetu tureti daugiau negu minimalius pagrindus Delphi programavime.
Na rashysiu shi skyriu remdamasis Delphi 5 programavimo kalba. Taigi...
norint priversti programa ka nors irashyti i registra reikia zhinoti kokiu
komponentu ji naudosis ir kokia komanda sius registrui.
Delphi aplinkoje yra TRegistry komponentas ( yra dar pora: TRegIniFile,
TRegistryIniFile, tachiau TRegistry yra universaliausias). Shis komponentas
yra nevizualus ir jo nera ne vienoje paleteje, taigi ji reikia isideti
kaip kintamaji bei irashyti i USES sarasha. pvz.:
uses
Registry, ...;
procedure lameriolauzhimas(Sender: TObject);
var
Reg: TRegistry;
Begin
...
Taig pazhiurime i ji giliau. Kaip ir kievienas Delphi komponentas jis
turi savybes (Properties), ju yra penkios, metodus (Methods), kuriu yra
labai daug, tachiau neturi "ivykiu" ??? (Events). Kiti , bet ne visi komponentai
turi ivykius.
Savybes: Access, CurrentKey, CurrentPath, LazyWrite ir RootKey.
1. Access: shia savybe yra nustatomas priejimo lygis dirbant su registro
raktais ir irashais.
Savybes sintakse tokia: TRegistry.Access(<parametrai>). Shtai visi
jo parametrai:
KEY_ALL_ACCESS visishko priejimo lygis (parametru KEY_READ, KEY_WRITE ir KEY_CREATE_LINK visuma);
KEY_READ ledzhia tik nuskaityti duomenis ish tam tikro irasho ar rakto;
KEY_WRITE ledzhia tik irashyti i registra naujus raktus ir irashus;
KEY_QUERY_VALUE garantuoja prieima prie bet kokio rakto ( bet ne irasho );
KEY_ENUMERATE_SUB_KEYS shis parametras "suskaichiuoja" registro raktus bei irashus;
KEY_NOTIFY shis parametras pranesha apie raktu bei irashu pasikeitimus;
KEY_SET_VALUE ledzhia sukurti naujus irashus raktuose;
KEY_CREATE_SUB_KEY ledzhia sukuti naujus raktus ( bet ne irashus );
KEY_CREATE_LINK sukuria nuorodas i kitus raktus, irashus ar failus diske;
KEY_EXECUTE apriboja registro raktu bei irashu naudojima iki read-only rezhimo.
Shios savybes tipas yra LongWord;
2. CurrentKey: shia savybe galima nustatyti koks registro raktas yra
konkrechiu momentu atidarytas. Demesio, jog operacijos programoje atliekamos
su registru paveiks tiktais ta rakta kuris yra tuo momentu atidarytas OpenKey
arba OpenKeyReadOnly metodu (apie juos veliau).Shios savybes tipas yra
HKEY;
Shiai savybei negalima priskirti jokio reikshmes, bet ja galima panaudoti
shtai taip:
Edit1.Text := Reg.CurrentKey;
3. CurrentPath: labai panashy savybe i CurrentKey, tik shiuo atveju
jeigu komanda pavyksta, tai grazhintas rezultatas bus ne tik to rakto pavadinimas,
bet ir kelias iki jo ( pvz.: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
=:). Shios savybes tipas yra STRING;
Kadangi shiai savybei negalima priskirti jokio reikshmes tai ja galima
pritaikyti shitaip:
Edit1.Text := Reg.CurrentPath;
4. LazyWrite: na shi savybe yra itin gera, kai jus nenorite atidarineti
kitu registro raktu ir padaryti irasha registre reikiamoje vietoje... t.y.
jums nereikia atidarineti raktu tiesiog pasakete programai, jog norite
tokio irasho tokioje vietoje ir viskas (ankschiau minejau, jog irashus
galima daryti tik ten kur yra atidaryti raktai, dabar "tik ten" pakeiskite
i "beveik tik ten" =:). Shios savybes tipas yra BOOLEAN (mano megiamiausias,
kas taip o kas nea ??? =:).
Sintakse: Reg.LazyWrite := True;
5. RootKey: nurodo kuris aukshchiausias hierarchijos lygis turetu buti
atidarytas ( pagal nutylejima: HKEY_CURRENT_USER );
Sintakse: Reg.RootKey := HKEY_CURRENT_USER;
Dabar visi shio komponento metodai (abeceles tvarka):
CloseKey: uzhdaro esamu momentu atidaryta rakta, kai visos reikalingos
"proceduros" atliko savo darba su juo.
Sintakse: Reg.CloseKey;
Create: pats svarbiausias metodas. Sukuria pati TRegistry komponenta
programoje. Pradines savybes bei parametrai buna shie:
RootKey := HKEY_CURRENT_USER (kaip ir pagal nutylejima), LazyWrite
:= True, dar galima nurodyti AAccess parametra, kuris bus priskiriamas
Access savybei, pagal nutylejima jis yra KEY_ALL_ACCESS.
Sintakse: Reg.Create(AAccess); //parametro AAccess gali ir nebuti
CreateKey: sukuria nauja rakta. Shio rakto struktura gali buti absoliuti
ir releatyvi. Skirtumas: absoliutus rakto vardas prasideda backslachu "\"
ir yra pradedamas kurti nuo TRegistry.RootKey reikshmes, o releatyvus yra
pradedamas kurti nuo konkrechiu momentu atidaryto rakto.
Sintakse: Reg.CreateKey(rakto_vardas);
DeleteKey: ishtrina nurodyta rakta. PASTABA: Windows95 operaciineje
sistemoje DeletKey metodas ishtrina visus raktus esanchius tame rakte (jeigu
supratote tai gerai), o WindowsNT 4.0 OS tai kiekvienam raktui reikia kviesti
atskira DeleteKey metoda (tas turbut labai uzhknistu).
Sintakse: Reg.DeleteKey(rakto_vardas);
DeleteValue: ishtrina nurodyta irasha (bet ne rakta).
Sintakse: Reg.DeleteValue(irasho_vardas).
Destroy: labai jau zhiaurus metodas. Uzhdaro konkretu rakta ir sunaikina
TRegistry komponenta programoje ishlaisvindamas atminti, kuri buvo skirta
TRegistry komponentui programoje.
Sintakse: Reg.Destroy; (jau girdzhiu laidotuviu marsha - cirkas baigesi
=:).
GetDataInfo: gauna irasho (!) registre informacija.
Sintakse: Reg.GetDataInfo(irasho_vardas,irasho tipas{deja ji turesite
irashyti patys});
Kadangi shiuo metodu jus tikrinsite registro irasho tipa, tai grazhintas
rezultatas yra arba True arba False;
Galimi tipai:
rdUnknown: nezhinomas registro irahso tipas;
rdString: registro irashas yra papraschiausias ANSI irashas.
rdExpandString: registro irashas yra taip pat ANSI tipo. Shis tipas saugo WinShell'o kintamuosius arba nuorodas i kitu registro irashus arba WinShell'o failus.
rdInteger: irashas yra papraschiausias 32bit skaichius.
rdBinary: irashe saugoma informacija yra dvejetainiame pavidale (10011100020MB100011010101010 =:)
GetDataSize: nustato irasho dydi baitais atidarytame rakte. Jeigu shi
operacija pavyksta, tai funkcija parodo irasho dydi baitais, jeigu ne tai
parodytas skaichius yra -1.
Sintakse: Reg.GetDataSize(irasho_vardas).
GetDataType: o chia tai metodas (!). Parodo irasho tipa (jums jau nebereikes
nustatineti jo su GetDataInfo metodu) konkrechiu momentu atidarytame rakte.
Irasho tipai tokie patys kaip ir GetDataInfo metode.
Sintakse: Reg.GetDataType(irasho_vardas).
PASTABA: Prie visu Delphi tipu esanchiu kodo pradchioje reikia nurodyti
TRegDataType parametrus:
type TRegsDataType= (rdUnknown, rdString, rdExpandString, rdInteger,
rdBinary);
GetKeyInfo: pateikia informacija apie konkretu atidaryta rakta. Kaip
ir GetDataType kodo pradzhioje reikes irashyti TGetKeyInfo parametrus:
type
TRegKeyInfo = record
NumSubKeys: Integer;
MaxSubKeyLen: Integer;
NumValues: Integer;
MaxValueLen: Integer;
MaxDataLen: Integer;
FileTime: TFileTime;
end;
Funkcijos sintakse tokia: Reg.GetKeyInfo(norimas_parametras);
Shio metodo parametrai:
NumSubKeys: nurodo raktu skaichiu esanchiu atidarytame rakte;
MaxSubKeyLen: ilgiausia rakto varda simboliais;
NumValues: irashu skaichius;
MaxValuelen: ilgiausio irasho vardas;
MaxDataLen: ilgiausia irasho reikshme;
FileTime: laikas, kai paskutini karta buvo rashoma i nagrinejamaji
rakta;
Jeigu shi funkcija nepavyksta, tai visoms reikshmems suteikiama reikshme lygi 0.
GetKeyNames: pateikia sarasha visu raktu esanchiu nurodytame rakte.
Sarashas pateikiamas TStrings tipo kintamaisiais (t.y. jus neikishite shito
sarasho i TListBox komponenta).
Sintakse: Reg.GetKeyNames(vieta_kur_parodyti_sarasha);
GetValueNames: labai panashi i GetKeyNames metoda, bet shi funkcija
pateikia irashu sarasha. Sarashas taip pat pateikiamas TStrings tipo kintamaisiais.
Sintakse: Reg.GetValueNames(vieta_kur_parodyti_sarasha);
HasSubKeys: nustato ar konkretus raktas turi raktu savyje.
Sintakse: Reg.HasSubKeys := True; //shio metodo paramtero tipas yra
BOOLEAN
KeyExists: nustato ar nurodytas raktas egzistuoja.
Sintakse: Reg.KeyExists := True; //tipas - BOOLEAN
LoadKey: sukuria nauja rakta po vienu ish aukshchiausiu raktu ir uzhkrauna
i ji informacija ish nurodyto failo.
Sintakse: Reg.LoadKey(rakto_pavadinimas, failo_vardas);
PASTABA: priesh naudojant shi metoda RootKey turi buti priskirtas HKEY_USERS arb HKEY_LOCAL_MACHINE.
MoveKey: perkelia visus rakto porakchius bei irashus i kita vieta suteikiant
jam nauja varda, beje reikia nurodyti dar ar reikia senaji rakta ishtrinti
ar nea.
Sintakse: Reg.MoveKey(senas_rakto_vardas, naujas_rakto_vardas, ishtrinti(true
arba false));
Po kopijavimo ar perkelimo naujasis raktas yra uzhdaromas. Po Windows NT kiekvienas rakto poraktis turi buti atskirai nukopijuotas arba perkeltas.
OpenKey: atidaro nurodyta rakta.
Sintakse: Reg.OpenKey(rakto_vardas, sukurti(true arba false));
Gali buti atveju, kad nurodytas raktas neegzistuos, tada "sukurti" parametro
vietoje irashysime true.
Jeigu mes norime atidaryti rakta nustatymu nuskaitymui programoje,
tai naudosime "sukurti" parametra false reikshme, nes mes jug nenoresime
per nauja shi rakta sukurti.
OpenKeyReadOnly: atidaro nurodyta rakta vien skaitymui (!). Atidaryto
rakto saugumo lygis bus KEY_READ.
Sintakse: Reg.OpenKeyReadOnly(rakto_vardas);
ReadBinaryData: nuskaito dvejetaine informacija ish nurodyto irasho.
Sintakse: Reg.ReadBinaryData(irasho_vardas, kintamasis, buferio_dydis);
Chia kintamasis yra programos kintamasis, kuriam reikes priskirti gauta
reikshme, buferio_dydis yra skaichius, kuris nurodo atminties dydi baitais,
kurioje bus laikoma "ishtraukta" informacija.
ReadBool: nuskaito logine informacija ish nurodyto irasho.
Sintakse: Reg.ReadBool(irasho_vardas);
Jeigu funkcija sekminga, tai jus gaunate reikalinga informacija ish
registro, jeigu nea, tai jus gaunate praneshima apie klaida.
ReadCurrency: na nebijokite, tai tikrai nevaliuta, bet ash pac dar neishsiaishkinau, kad chia per metodas sorry.
ReadDate: nuskaito data ish nurodyto irasho.
Sintakse: Reg.ReadDate(irasho_vardas);
Naudokite shi metoda, tada, kai i irasha irashete reikshme su WriteDate
procedure(apie tai veliau). Jeigu irashas nesaugo savyje reikshmes "panashios"
i data, tai tada yra parodomas praneshimas apie klaida.
ReadDateTime: panashi i ReadDate, tik be datos ji dar nuskaito ir laika. Salygos tokios pachio sintakse tokia pati.
ReadFloat: nuskaito slankaus kablelio skaichiu. Jeigu irashas neturi
savyje tokio skaichiaus yra parodomas praneshimas apie klaida.
Sintakse: Reg.ReadFloat(irasho_vardas);
ReadInteger: nuskaito skaichiu Integer tipo. Salygos bei sintakse tokia pati kaip ir pas ReadFloat.
ReadString: nuskaito simbolius (zhodzhius) ish nurodyto irasho. Shis
metodas tinka tada, kai irashas buvo padarytas WriteString arba WriteExpandString
metodu (apie juos veliau).
Sintakse: Reg.ReadString(irasho_vardas);
ReadTime: nuskaito laika ish registro irasho. Naudokite shi metoda tik
tada, kai irasha padarete WriteTime metodu (apie ji veliau).
Sintakse: Reg.ReadTime(irasho_vardas);
RegistryConnect: kvepia hackinimu. Taip ir yra. Shi komanda prisijungia
prie kito kompo registro.
Sintakse: Reg.Registry.Connect(//kompo_vardas);
PASTABA: priesh naudojantis shiuo metodu reikia RootKey savybe priskirti prei HKEY_USER arba HKEY_LOCAL_MACHINE.
RenameValue: shis metodas pakeichia irashui priskirta reikshme i nauja.
Sintakse: Reg.RenameValue(sena_reikshme, nauja_reikshme)
PASTABA, jeigu jus pervardinsite viena irasho tipa i kita, tai jums
nebus jokio ispejimo ir jis bus pakeistas (!).
ReplaceKey: pakeichia vien rakta kitu ish naujo failo, senaji irashydamas
i kita faila.
Sintakse: Reg.ReplaceKey(rakto_vardas, failas_i_kuri_bus_perrashytas_raktas,
failas_ish_kurio_bus_irashytas_naujas_raktas);
SVARBI PASTABA: failas_i_kuri_bus_perrashytas_raktas turi buti padarytas
su metodu SaveKey, kurio sintakse yra sekanti:
Reg.SaveKey(rakto_vardas, failo_pavadinimas_su_reg_pletiniu);
Taigi bendra ReplaceKey sintakse butu kazhkas panashaus i:
Reg.Replacekey(rakto_vardas,SaveKey(rakto_vardas,failo_pavadinimas_su_reg_pletiniu),failas_ish_kurio_bus_irashytas_naujas_raktas);
RestoreKey: metodas kuris atkuria rakta ish failo ankschiau sukurto
su SaveKey metodu.
Bendra sintakse: Reg.RestoreKey(rakto_vardas, SaveKey(failas_ish_kurio_bus_atgamintas_raktas));
SaveKey: na jau anskchiau minejau, kad tai metodas, kurio yra atidaromas vienas ish raktu ir ishsaugomas i konkretu faila su pletiniu *.reg.
UnLoadKey: ishkrauna viena ar kita rakta ish registro nemodifikuodamas
failo (jeigu toks yra) ish kurio tas raktas buvo uzhkrautas LoadKey metodu.
Priesh naudojant shia funkcija RootKey savybe turi buti nustatyta i HKEY_USERS
arba HKEY_LOCAL_MACHINE.
Sintakse: Reg.UnLoadKey(rakto_vardas);
ValueExists: tikrina ar nurodytas irashas egzistuoja registre. Tipas
BOOLEAN.
Sintakse: Reg.ValueExists(irasho_vardas);
WriteBinaryData: padaro irasha nurodytu vardu dvejetainio tipo. T.y.
jame saugoma informacija yra dvejetainiame pavidale.
Sintakse: Reg.WriteBinaryData(irasho_vardas, kintamasis, buferio_dydis);
Visi kiti parametrai(kintamasis, buferio dydis) yra apzhvelgiami metode
ReadBinaryData.
WriteBool: padaro irasha nurodytu vardu loginio tipo (True, False),
nors i registre irashas yra padaromas kaip dvejetainio tipo. Jeigu shi
funkcija nepavyksta jokie irashai nera padaromi registre ir yra parodomas
praneshimas apie klaida.
Sintakse: Reg.WriteBool(irasho_vardas, true/false);
WriteCurrency: nu jug sakiau, kad nezhinau ka reishkia ReadCurrency, tai nezhinau ka reishkia ir shitas metodas.
WriteDate: padaro irasha, kurio reikshme yra data.
Sintakse: Reg.WriteDate(irasho_vardas, reikshme);
Reikshme yra TDateTime tipo kintamasis. Galimos kintamojo reikshmes:
0 - laikas bus pradetas skaichiuoti nuo 1899 12 30 12:00 vidurdieni.
2.75 - laikas bus pradetas skaichiuoti nuo 1900 01 01 6:00 vakare.
-1.25 - laikas bus pradetas skaichiuoti nuo 1899 12 29 6:00 ryte.
35065 - laikas bus pradetas skaichiuoti nuo 1996 01 01 12:00.
WriteDateTime: padaro irasha, kurio reikshme yra laikas.
Sintakse: Reg.WriteDateTime(irasho_vardas, reikshme);
Reikshme yra TDateTime tipo kintamasis. Kintamojo reikshmes yra tokios
pachios tiktais shiuo atveju procedura data irasho ir laika ir data.
WriteExpandString: padaro irasha kuris nukreipia i kitus sistemos kintamuosius,
failus arba registro irashus.
Sintakse: Reg.WriteExpandString(irasho_vardas, reikshme);
Reikshme chia yra paprastas "kelias" iki vieno ar kito kintamojo ar
failo sistemoje ir pan.
WriteFloat: padaro irasha su slankaus kablelio skaichiumi. Tokiu pvz
kaip pi:=3.1415296 arba 1 inch := 2.54 cm ir t.t. ir pan.
Sintakse: Reg.WriteFloat(irasho_vardas, reikshme);
Reikshme yra skaichius kuri jus norite irashyti. Shi irasha jus veliau
galite "nuskaityti" su ReadFloat metodu.
WriteInteger: padaro irasha su sveikuoju skaichiumi. Shi irasha jus
veliau galite "nuskaityti" su ReadInteger metodu.
Sintakse: Reg.WriteInteger(irasho_vardas, reishme);
Reikshme - jusu norimas skaichius.
WriteString: padaro irasha su simbliu reikshme (zhodzhiais). Shi irasha
jus veliau galite "nuskaityti" su ReadInteger metodu.
Sintakse: Reg.WriteString(irasho_vardas, reikshme);
Na nebeaishkinsiu ka reishkia reikshme =:).
WriteTime: padaro irasha, kurio reikshme yra laikas. Viskas tas pats kaip ir WriteDate ar WriteDateTime, tik dabar jum padarys irasha, kuriame yra tik (!) data.
Shtai visi TRegistry komponento metodai bei savybes. Ash nenorejau jums rashyti "paspausk chia, rashyk taip". Ash jums trumpai apibudinau kiekviena savybe bei metoda, tikiuosi su jais zhinosite ka daryti ir padarysite keliu savybiu bei metodu "mirtina jungini" =:).
5. Idomiausios vietos registre:
HKEY_CURRENT_USER\Software\Microsoft\Notepad
HKEY_CURRENT_USER\Software\Microsoft\Telnet
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
(visi failu pletiniai ir su kuo jie turetu buti atidaromi)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders (windozu katalogu tokiu kaip Favorites Templates Startup ir t.t.
keliai (paths) windozu kataloge =:)~ skanu...
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User
Shell Folders (vartotojo shell katalogai).
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\GrpConv\MapGroups
(kazhkas panashaus i Startmenu katalogus bei taskbar quick launch konfiguracija)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Zones (viskas kas susije su Desktop ikonomis tokiomis kaip My
Computer, NetWork neighborhood ir pan.
HKEY_LOCAL_MACHINE\SOFTWARE\CLASSES\CLSID\{645FF040-5081-101B-9F08-00AA002F954E}
(chia galite pakeisti savo shiukshliu dezhes pavadinima ir apibudinima).
6. Naudota literatura: Delphi 5 help failas. Registra ishnarshiau pats.
Tikiuosi patiks.
® 2002-2003 VaidaZ