APIS bak Registry

kjenner Apis ansvarlig o håndtaket Windows Registry.
|| APIer Behind Regi ||

Av Nilesh Gore: - [email protected]


Her jeg beskriver veien for å redigere Windows-registeret ved hjelp av API-er, vil dette gå gjennom hele prosessen med håndtering, slik at du kan lage dine egne biblioteker eller ActiveX-komponenter til å håndtere Windows Registry.

de APIer som blir forklart er bare valgt APIer som kan redigere registret så kan begynne å forstå APIer ansvarlig for håndtering av Windows Registry


1] for å åpne registernøkkel
R

Dette API-funksjonen brukes til å åpne nøkkelen og funksjonen er som følger


Erklærer Funksjon RegOpenKeyEx Lib " ADVAPI32.dll " Alias ​​" RegOpenKeyExA " (ByVal HKEY As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Nå kan forstå parametrene i funksjonen

HKEY: -. Dette klarer å åpne en nøkkel eller for tiden åpne nøkkel som kan
være hvilket som helst av følgende

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG

HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA

LpSubKey: - Dette er pekeren til en null-terminert streng holde navnet av sub-tasten til å åpne. Hvis denne parameteren er NULL eller en peker er til en tom streng, vil funksjonen åpne et nytt håndtak til nøkkelen identifisert av HKEY parameter. I dette tilfellet, vil funksjonen ikke lukke håndtakene tidligere åpnet

Uloption: -. Dette er alltid reservert og må være Zero
.
SamDesired: - Dette brukes for sikkerhetstilgang, Angir en tilgangsmaske som beskriver den ønskede sikkerhetstilgang for den nye nøkkelen. Denne parameteren kan være en kombinasjon av følgende verdier:

KEY_ALL_ACCESS: - Dette inneholder en kombinasjon av følgende taster KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS

KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK
KEY_SET_VALUE tilgang

KEY_CREATE_LINK: -. det brukes for tillatelse til å opprette koblingen

bilder KEY_CREATE_SUBKEY: - navnet antyder, dens tillatelse til å opprette undernøkkelen
bilder
bilder KEY_ENUMERATE_SUB_KEYS: -. tillatelse til å nummerere undernøkler .

KEY_EXECUTE: -. tillatelse til å lese tilgang

KEY_NOTIFY: - tillatelse til endre varslings

KEY_QUERY_VALUE: -.. Tillatelse til å spørre undernøkkeldata

KEY_READ : - den bruker en kombinasjon av KEY_QUERY_VALUE
KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY tilgang

KEY_SET_VALUE: -. det brukes til å stille inn Sub nøkkeldata

KEY_WRITE: -. Som navnet antyder, det bruker en kombinasjon av KEY_CREATE_SUB_KEY, KEY_SET_VALUE tilgang. Dette er verdiene av SamDesired

PhkResult: -. Egentlig PHKEY er pekeren til HKEY og PhkResult Pekeren til en variabel som mottar et håndtak til den åpne nøkkelen. Når du ikke lenger trenger den returnerte håndtaket, ring RegCloseKey (Denne nøkkelen er forklart i neste emne.) -funksjonen For å lukke det. Merk: - Denne funksjonen kan ikke opprette den angitte nøkkelen hvis nøkkelen ikke finnes i registeret
2- For Closing Key
R

Denne funksjonen brukes til å lukke nøkkelen, er funksjonen som følger
Erklærer funksjon RegCloseKey Lib ". ADVAPI32.dll " (ByVal HKEY As Long) As Long

Det er bare én parameter som brukes i denne funksjonen som er
HKEY: - som er håndtere til den åpnede for å lukke. Merk: - må ikke brukes Håndtaket for en bestemt nøkkel etter at den har vært stengt, fordi det vil ikke lenger være gyldig. Nøkkel håndtak kan ikke stå åpen lenger enn nødvendig. Den RegCloseKey virker ikke nødvendigvis skrive informasjon til registeret før retur; det kan ta så mye som flere sekunder for bufferen som skal skrives til harddisken.
3] for å opprette nøkkelen
R


Denne funksjonen brukes for å lage nøkler. Funksjonen er som følger

Erklærer Funksjon RegCreateKey Lib ". ADVAPI32.dll " Alias ​​" RegCreateKeyA " (ByVal HKEY As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Nå kan gå for parametre, disse er ganske lik den RegOpenKey

Men jeg vil forklare det som følger

HKEY: -. Dette klarer å åpne en nøkkel eller for tiden åpne nøkkel som kan

være hvilket som helst av de følgende.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA

viktigste åpnet eller opprettet av denne funksjonen er en undernøkkelen til nøkkel identifisert av HKEY.

LpSubKey: - Det er en peker til en null-terminert streng som angir navnet på en nøkkel som denne funksjonen åpner eller oppretter. Denne nøkkelen må være en undernøkkel av nøkkelen identifisert av HKEY parameteren. Anta HKEY er en av de forhåndsdefinerte nøkler, lpSubKey kan være NULL. I så fall håndtaket tilbake ved hjelp PhkResult (forklart nedenfor) er det samme HKEY håndtak vedtatt i til funksjonen

PhkResult: -. Det er en peker til en variabel som mottar et håndtak til åpnet eller opprettet tasten.
Merk: - Når LpSubKey parameter er adressen til en tom streng, åpnes funksjonen og deretter går tilbake nøkkelen identifisert av HKEY parameter

4] for å slette viktige
R

Denne funksjonen brukes til å slette sub nøkkelen og alle dens avhengige eller annen sub nøkler. Ved windows NT denne funksjonen vil ikke slette undernøkkelen hvis den har andre undernøkler i denne situasjonen må du fjerne Z til A orden betyr Form lavere sub nøkkelen til toppen. Funksjonen er som følger

Erklærer Funksjon RegDeleteKey Lib ". ADVAPI32.dll " Alias ​​" RegDeleteKeyA " (ByVal HKEY As Long, ByVal lpSubKey As String) As Long

Så parametrene er


HKEY: - Dette er håndtere å åpne en nøkkel eller for tiden åpne nøkkel som kan
være hvilket som helst av følgende
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS. , HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA

LpSubKey: - det er pekeren til en null-terminert streng som angir navnet på nøkkelen slette. Denne parameteren kan ikke være NULL og i tilfelle av Windows NT Det må ikke ha undernøkkelen.

5] å få verdi

R

Denne funksjonen henter type og data for bestemt verdi. Funksjonen er

Erklærer Funksjon RegQueryValueEx Lib " ADVAPI32.dll " Alias ​​" RegQueryValueExA " (ByVal HKEY As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long

Så her parametrene få endret, kan se dem

HKEY: - Det er samme som ovenfor funksjon, vennligst se dem
.
LpValueName: - det er en peker til en null-terminert streng som holder navnet på verdien til å spørre. Dersom denne parameteren er NULL eller en tom streng, " ", funksjonen henter type og data for nøkkelen sin navnløse eller standardverdi

LpReserved. : - som navnet antyder, er det reservert er alltid Null

LpType: -. det er en peker til variabel som får den type data knyttet til angitte verdien. Beskrivelsen av verdier som returneres med denne parameteren er som følger

1] RegBinary: -. Det er en binærdata


2] REG_DWORD: -. Doword datatype med 32 Bit antall

3] Reg_Dowrd_Little_Endian: - Det er et tall i Little endian format, dette er 32-biters tall som er det samme som å Reg_Doword.In dette formatet, en multi - er byte verdi lagret i minnet fra det laveste byte (" litt end ") til høyeste byte. For eksempel er verdien 0x123456 lagres som (0x56 0x34 0x12) i lite endian format.
Se Registerdatatype for flere detaljer.
< .no> 4] Reg_Dowrd_Big_Endian: - Tallet er i Big_Endian format som er en 32bit nummer. I dette formatet en multi-byte verdi blir lagret i minnet fra det høyeste byte (" store enden ") til det laveste byte. For eksempel er verdien 0x123456 lagres som (0x12 0x34 0x56) i big-endian format

5] REG_EXPAND_SZ: -. Det er null terminert streng som holder uventet henvisning til de miljøer variablene (F.eks. «% System%"). Dette kan være Unicode eller ANSI String basert på om du vi bruker Unicode eller ANSI funksjon

6] REG_LINK: -. Det er et Unicode symbolsk Link

7] REG_MULTI_SZ: -. En rekke null terminert streng, sies opp av to nulltegn


8] REG_NONE: - Definert verdi type er ingenting

9] REG_RESOURCE_LIST: -.. Liste over enhetsdriver ressurser


10] REG_SZ: - Det er en null- terminert streng. Det vil være ANSI eller Unicode-streng avhengig av om du bruker Unicode eller ANSI functions.So kan se neste parameter dvs. LpData

LpData: -. Det er en peker til en buffer som har data i verdi. Denne parameteren kan være NULL hvis dataene ikke er nødvendig. Nå kan gå til den siste parameteren dvs. LpcbData

LpcbData: -. Det er en peker til en variabel som angir størrelsen på buffer peker til den LpData parameter. Når funksjonen returnerer, inneholder denne variabelen størrelsen på dataene kopieres til LpData. Størrelsen på det er i byte.
Anta bufferen som er angitt av lpData parameter er ikke stor nok til å inneholde data, returnerer funksjonen verdien ERROR_MORE_DATA, og lagrer det nødvendige bufferstørrelsen i variabelen peker til av lpcbData.
og i tilfelle lpData er NULL, og lpcbData er ikke-NULL deretter funksjonen returnerer ERROR_SUCCESS, og lagrer størrelsen på data, i byte, i variabelen peker til lpcbData .
Husk at anta verdien data har REG_SZ, REG_MULTI_SZ eller REG_EXPAND_SZ type, og ANSI-versjonen av denne funksjonen brukes enten ved å eksplisitt kalle RegQueryValueExA eller ved å ikke definere UNICODE, konverterer denne funksjonen lagret Unicode strengen til en ANSI streng før du kopierer den til buffer peker til lpData.
nå kan ta en titt på Windows NT, ved NT (eller NT basert System)

Når HKEY spesifiserer HKEY _ PERFORMANCE_DATA og lpData bufferen er liten, RegQueryValueEx returnerer ERROR_MORE_DATA men lpcbData ikke returnerer den nødvendige bufferstørrelse. Dette er fordi størrelsen på ytelsesdata kan endre seg fra en samtale til den neste. I et slikt tilfelle må du øke bufferstørrelsen og ringe RegQueryValueEx igjen bestått oppdatert bufferstørrelse i lpcbData parameter. Gjenta dette til funksjonen lykkes. Du må opprettholde en egen variabel for å holde styr på bufferstørrelsen, fordi verdien returnert av lpcbData er uforutsigbar.
Det er utrolig, men helt normalt at når vi kalte RegQueryValueEx funksjon med HKEY satt til den HKEY_PERFORMANCE_DATA håndtak og en verdi streng av en bestemt objekt, har returnert datastrukturen noen ganger forespurt gjenstander

. Merk: - den LpType parameteren kan være NULL hvis typen er ikke nødvendig.
LpcbData parameter kan være NULL hvis LpData er NULL.


6] for å stille Verdi
R

Den brukes til å lagre data og skriv ein viss verdi i en registernøkkel
funksjon er som følger

Erklærer funksjon RegSetValueEx Lib ".. ADVAPI32.dll " Alias ​​" RegSetValueExA " (ByVal HKEY As Long, ByVal lpValueName As String, ByVal Reserved Som Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long


så kan komme i nærheten av Para

HKEY: - det er samme som ovenfor funksjon, vennligst se dem


LpValueName: - det er en peker til en streng som holder navnet på verdien å sette. når en verdi med dette navnet ikke allerede er til stede i nøkkelen, funksjonen legger det til tasten. Anta lpValueName er NULL eller en tom streng, " ", den funksjonen setter type og data for nøkkelen sin navnløse eller standardverdi. Den neste parameteren Reservert det har ingenting forklare som navnet tilsier all

DwType: -. Denne parameteren Angir typen ting som skal lagres som verdien av data . Denne parameteren har samme verdiene som vi har diskutert i funksjonen RegQueryValueEx, så kan du se alle disse verdiene

LpData: -. Det er en peker til en buffer som inneholder dataene som skal lagres med den angitte verdien navn

CbData: -. Denne parameteren angir størrelsen på data pekes til av lpData parameter. Hvis dataene er av typen REG_SZ, REG_EXPAND_SZ, eller REG_MULTI_SZ, må cbData omfatte størrelsen på avslutnings null tegn. Størrelsen på dataene er i bytes.

7] for å spesifisere verdier Book R
Denne funksjonen nummerer verdiene for den angitte åpne registernøkkelen. Den funksjonen kopierer en indeksert verdi navn og datablokk for nøkkelen hver gang den blir kalt. Noen funksjonsparametere er lik RegQueryValueEx, Still vil vi se det. Funksjonen er som følger

Erklærer Funksjon RegEnumValue Lib ". ADVAPI32.dll " Alias ​​" RegEnumValueA " (ByVal HKEY As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long


nå kan forstå parametere som er involvert på denne funksjonen

HKEY: - dette er håndtere å åpne en nøkkel eller for tiden åpne nøkkel som kan
være hvilket som helst av de følgende.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA
HKEY_PERFORMANCE_DATA

Bedrifter den oppregnet verdier er assosiert med nøkkelen identifisert av HKEY

DwIndex: -. Denne parameteren angir indeks over verdien som skal hente. Denne parameteren bør være null for den første samtalen til RegEnumValue funksjon og deretter økes for videre samtaler. I tilfelle verdiene ikke er organisert, vil eventuelle nye verdien har en vilkårlig indeks. Dette betyr at funksjonen kan returnere verdier i vilkårlig rekkefølge

LpValueName: -. Denne parameteren er en peker til en buffer som mottar navnet på verdien, inkludert det avslutning null tegnet

LpcbValueName: -. Denne parameteren er en peker til en variabel som angir størrelsen, i tegn, på bufferen pekte ved LpValueName parameter. Denne størrelsen bør omfatte avslutning null tegn. Når funksjonen returnerer, variabelen peker til LpcbValueName inneholder antall tegn som er lagret i bufferen. Tellingen returnert inkluderer ikke avslutte null tegn

LpReserved: -. Reservert; må være NULL
LpType: - Det er en peker til variabel som får den type data knyttet til den angitte verdien. Beskrivelsen av verdier som returneres med denne parameteren er som følger

1] RegBinary: -. Det er en binærdata


2] REG_DWORD: -. Doword datatype med 32 Bit antall

3] Reg_Dowrd_Little_Endian: - Det er et tall i Little endian format, dette er 32-biters tall som er det samme som å Reg_Doword.In dette formatet, er en multi-byte verdien som er lagret i minnet fra laveste byte (" litt end ") til høyeste byte. For eksempel er verdien 0x123456 lagres som (0x56 0x34 0x12) i lite endian format.
Se Registerdatatype for flere detaljer.
< .no> 4] Reg_Dowrd_Big_Endian: - Tallet er i Big_Endian format som er en 32bit nummer. I dette formatet en multi-byte verdi blir lagret i minnet fra det høyeste byte (" store enden ") til det laveste byte. For eksempel er verdien 0x123456 lagres som (0x12 0x34 0x56) i
big-endian format.

5] REG_EXPAND_SZ : - Det er null terminert streng som holder uventet referanse til de miljøer variablene
Dette kan være Unicode eller ANSI string basert på om du vi bruker Unicode eller ANSI (F.eks «% System%".). . funksjon

6] REG_LINK: -. Det er et Unicode symbolsk Link

7] REG_MULTI_SZ: - En rekke null terminert streng, sies opp av to nulltegn

8] REG_NONE: -. Definert verditype er ingenting
.

9] REG_RESOURCE_LIST: -. Liste over enhetsdriver ressurser

10] REG_SZ: - Det er en null-terminert streng. Det vil være ANSI eller Unicode-streng avhengig av om du bruker Unicode eller ANSI funksjoner.
Så det var beskrivelsen av verdier, nå, kan se neste parameter dvs. LpData.


LpData: - Det er en peker til en buffer som har data av verdi. Denne parameteren kan være NULL hvis dataene ikke er nødvendig. Nå kan gå til den siste parameteren dvs. LpcbData

LpcbData: -. Det er en peker til en variabel som angir størrelsen på buffer peker til den LpData parameter. Når funksjonen returnerer, inneholder denne variabelen størrelsen på dataene kopieres til LpData. Størrelsen av det er i byte. Anta at buffer angitt av lpData parameter er ikke stor nok til å inneholde data, returnerer funksjonen verdien ERROR_MORE_DATA, og lagrer den nødvendige bufferstørrelsen i variabelen peker til lpcbData. Og i tilfelle lpData er NULL, og lpcbData er ikke-NULL deretter funksjonen returnerer ERROR_SUCCESS og lagrer størrelsen på dataene i byte i variabelen peker til lpcbData.
Merk: - Når du nummerere verdier, et program i utgangspunktet kalle RegEnumValue funksjonen med DwIndex parameteren satt til null. Søknaden deretter øke DwIndex og ringe RegEnumValue funksjonen til det ikke er flere verdier til funksjonen returnerer ERROR_NO_MORE_ITEMS. Søknaden kan også stille DwIndex til indeksen for den siste verdien på den første samtalen til funksjonen og minske indeksen inntil verdien med indeks 0 (null) er nummerert.
Når du bruker RegEnumValue, en søknad skal ikke kalle noen registreringsfunksjoner som kan endre nøkkelen som spørres. Nøkkelen identifiseres av HKEY parameter må ha blitt åpnet med KEY_QUERY_VALUE tilgang. For å åpne nøkkelen, bruker RegCreateKeyEx eller RegOpenKeyEx funksjon.

8] for å slette Verdier Book R

å slette registerverdien av bestemt nøkkel må vi bruke samme tidligere APIer for åpning og lukking nøkkelen sammen med nytt API som er RegDeleteValueEx. Denne funksjonen brukes for deletimg Registerverdier, Den har to prameters bare man holder håndtere og andre innehar verdinavn som skal slettes. Så funksjonen er som følger

Public Declare Function RegDeleteValue Lib " ADVAPI32.dll " Alias ​​" RegDeleteValueA " (ByVal HKEY As Long, ByVal lpValueName As String) As Long

Og parametrene er "HKEY og LpValueName
HKEY: dette er håndtere å åpne en nøkkel eller for tiden åpne nøkkel som kan
være hvilket som helst av de følgende.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG, HKEY_DYN_DATA


LpValueName: det er en peker til en null-terminert streng som holder navnet på verdien til å spørre. Dersom denne parameteren er NULL eller en tom streng, " ", funksjonen henter type og data for nøkkelen sin navnløse eller standardverdi

Note. at nøkkelen identifisert av HKEY parameter må ha blitt åpnet med KEY_SET_VALUE tilgang (KEY_WRITE tilgang inkluderer KEY_SET_VALUE tilgang

oppsummering
Så langt i dette kapitlet vi lærte måter som registeret kan redigeres med
programmering. de API-funksjoner som brukes i redigeringsprosessen.
funksjoner som brukes er som følger

1] Åpne Key: - RegOpenKeyEx
2] Lukke Key: - RegCloseKey
3] Opprette Key: - RegCreateKey

4] sletter Key: - RegDeleteKey
5] Lese verdier: - RegQueryValueEx
6] Skrive verdier: - RegSetValueEx
7] Opplisting verdi: - RegEnumValue
8] Slette Verdier: - RegDeleteValue
Vi har studert parametrene av disse funksjonene og sine verdityper
også, Den lille henvisning til disse parametrene er som følger
product: *] HKEY: -. Håndtak til nøkkelen
*] LpSubKey: -. Peker til null terminert streng
*] Uloption: -. null reservert verdi
. *] SamDesired: - Angir tilgangsmaske til ønsket sikkerhetstilgang
*] PhkResult: -. Peker til variabelen som mottar håndtere
*] LpValueName: -. Pointer til en null-terminert streng holde navn spør
*] LpcbValueName: - Angir størrelsen på buffer peker til LpValueName
*] LpReserved: -. reservert null verdi
product: *] LpType: - Peker til variabelen som mottar data.
*] LpData: - Peker til buffer som har data verdi
*] LpcbData: - Angir størrelsen på bufferen pekes til av LpData

product: *] DwType: - dataene skal lagres med bestemt verdi navn
*] CbData: - angir størrelsen på data pekes til av lpData

*] DwIndex: - Angir indeksen av verdien til å være hente

Nilesh Gore
.