Få tilgang til Windows Registry

Denne artikkelen introduserer et par hendige funksjoner som gjør det lett å lese og skrive verdier i Windows Registry.WHAT er registret? Det er der Windows lagrer mange av sine konfigurasjonsmuligheter og også tillater programmer å få tilgang til disse dataene som samt lagre sine egne data.Hvis du ønsker å ta en titt på registeret, bare kjøre REGEDIT.EXE søknaden ligger i Windows-katalogen. Vær forsiktig så du ikke å endre noe, eller du kan ende opp med å ødelegge din installasjon! Nå dataene i registeret lagres i en trestruktur. Det er mange røtter (mange trær): HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS HKEY_PERFORMANCE_DATA HKEY_CURRENT_CONFIG HKEY_DYN_DATAEach root kan ha verdier og nøkler. Verdiene er data som er lagret under skifter navn (høyre panel av regedit). Nøkler kan ha verdier og andre taster, danner en trestruktur (venstre panel i regedit) .TREGISTRYThe TRegistry klassen er deklarert i registeret enhet, så du blir nødt til å legge denne enheten til bruk klausulen av enheten eller programmet der du vil bruk det. Å få tilgang til en verdi i registret første du bør lage et objekt av denne klassen, tilordne roten til sin ROOTKEY eiendom (verdiene er definert i Windows enhet) og deretter prøver å åpne en nøkkel med OpenKey funksjonsmetoden, som vil komme tilbake True hvis vellykket. Da kan du lese (med ReadXxxx funksjoner) eller skrive (med WriteXxxx prosedyrer) verdiene av den åpne nøkkelen, og etter det, bør du lukke nøkkelen med CloseKey.When du er ferdig med registeret, bør du frigjøre registret objektet du created.Let oss se et eksempel på hvordan du kan få navnet på prosessoren i datamaskinen vår: bruker registeret, Windows, Dialoger; Prosedyren TForm1.Button1Click (Sender: TObject); Var Reg: TRegistry; begynne Reg: = TRegistry.Create; Reg.RootKey: = HKEY_LOCAL_MACHINE; hvis Reg.OpenKey ('\\ Maskinvare \\ Beskrivelse \\ System "+" \\ CentralProcessor \\ 0', False), og start ShowMessage (Reg.ReadString ('Identifier')); Reg.CloseKey; slutt; //Hvis Reg.Free; end; Du kan se et eksempel i artikkelen Bestemme forbundet application.Of selvfølgelig, det er mange flere ting du kan gjøre med registeret, som å opprette og slette nøkler og verdier ... Den TRegistryIniFile klasse gjør det enklere for applikasjoner å skrive og lese deres konfigurasjonsinformasjon til og fra registeret, mens TRegistry opererer med en lavere level.GETREGISTRYDATATo forenkle lese en dataverdi fra registret, kan du bruke følgende funksjon som kan lese hvilken som helst datatype fra registeret og returnerer det som en variant ( streng eller heltall). Funksjonen utfører avvikshåndtering. bruker registeret, Windows, SysUtils; fungere GetRegistryData (ROOTKEY: HKEY; Key, Verdi: string): variant; Var Reg: TRegistry; RegDataType: TRegDataType; Datasize, Len: integer; s: string; etiketten cantread; begynne Reg: = null; prøv Reg: = TRegistry.Create (KEY_QUERY_VALUE); Reg.RootKey: = ROOTKEY; hvis Reg.OpenKeyReadOnly (Key) og deretter begynne prøve RegDataType: = Reg.GetDataType (verdi); if (RegDataType = rdString) eller (RegDataType = rdExpandString) så Resultat: = Reg.ReadString (Verdi) else if RegDataType = rdInteger deretter Resultat: = Reg.ReadInteger (Verdi) else if RegDataType = rdBinary deretter begynne datasize: = Reg.GetDataSize (Verdi); hvis datasize = -1 deretter goto cantread; SetLength (s, datasize); Len: = Reg.ReadBinaryData (verdi, PChar (s) ^, datasize); hvis Len < > Datasize deretter goto cantread; Resultat: = s; ende elsecantread: heve Exception.Create (SysErrorMessage (ERROR_CANTREAD)); unntatt s: = ''; //Deallokerer minne om tildelt Reg.CloseKey; heve; slutt; Reg.CloseKey; ende annet heve Exception.Create (SysErrorMessage (GetLastError)); bortsett Reg.Free; heve; slutt; bortsett Reg.Free; heve; end; PRØVE CALL ShowMessage (GetRegistryData (HKEY_LOCAL_MACHINE, '\\ Maskinvare \\ Beskrivelse \\ System \\ CentralProcessor \\ 0', 'Identifier')); SETREGISTRYDATATo forenkle skriving en dataverdi i registret, kan du bruke følgende prosedyre som kan skrive noen datatype til registry.The prosedyren utfører avvikshåndtering. bruker registeret, Windows, SysUtils; Prosedyren SetRegistryData (ROOTKEY: HKEY; Key, Verdi: string; RegDataType: TRegDataType; Data: variant); Var Reg: TRegistry; s: string; begynne Reg: = null; prøv Reg: = TRegistry.Create (KEY_WRITE); Reg.RootKey: = ROOTKEY; hvis Reg.OpenKey (Key, sann) da begynne prøve hvis RegDataType = rdUnknown deretter RegDataType: = Reg.GetDataType (verdi); hvis RegDataType = rdString deretter Reg.WriteString (verdi, Data) else if RegDataType = rdExpandString deretter Reg.WriteExpandString (verdi, Data) else if RegDataType = rdInteger deretter Reg.WriteInteger (verdi, Data) else if RegDataType = rdBinary deretter begynne s: = data; Reg.WriteBinaryData (verdi, PChar (s) ^, lengde (r)); ende annet heve Exception.Create (SysErrorMessage (ERROR_CANTWRITE)); bortsett Reg.CloseKey; heve; slutt; Reg.CloseKey; ende annet heve Exception.Create (SysErrorMessage (GetLastError)); bortsett Reg.Free; heve; slutt; Reg.Free; end; PRØVE CALL SetRegistryData (HKEY_LOCAL_MACHINE, '\\ Software \\ Microsoft \\ Windows \\ Current', 'RegisteredOrganization', rdString, 'Latium Software'); Anmeldelser



Previous:
Next Page: