Esse exemplo demonstrará como enumerar (listar) chaves, nomes ou valores.
Extremamente importante se você quer fazer uma função de pesquisa no registro.
Segue o código comentado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
inclua'win'; k = win.RegAbraChave( HKEY_CURRENT_USER,'PrismaInfo', KEY_LEITURA); //enumerando os nomes da chave 'k' : "HKEY_CURRENT_USER\\PrismaInfo\\" v = win.RegEnumere( k ) se v entao //lendo os valores para i , v em ipares( v ) inicio imprima(v); //obtendo informacao de tipo de chave e valor, e tamanho: (retorno é uma tabela com os campos: tipo , tamanho local t = win.RegObtInfoValor(k , v ) imprima( 'tamanho: ' .. t.tamanho); se t.tipo == REG_BINARY entao imprima('\n'.. t.tipo , 'tipo binario') imprima( desempacote(win.RegLeiaChaveBin(k,v) ) ); senaose t.tipo == REG_SZ entao imprima('\n'.. t.tipo , 'tipo string') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_EXPAND_SZ entao imprima( '\n'.. t.tipo , 'tipo string com variaveis de ambiente') imprima( win.RegLeiaChaveStr(k,v) ); senaose t.tipo == REG_MULTI_SZ entao imprima( '\n'.. t.tipo , 'tipo multi string') local tt = win.RegLeiaChaveStr(k,v) ; imprima( desempacote(tt) ); senaose t.tipo == REG_DWORD entao imprima('\n'.. t.tipo , 'tipo numero') imprima( win.RegLeiaChaveNum(k,v) ); fim fim //fim para imprima( v.tipo ); fim win.RegFecheChave(k); win.poe'Ok para sair'; |
Detalhes:
A função para listar todas as subchaves de uma chave maior é:
1 |
v = win.RegEnumere( k ) |
Onde ‘k’ é a chave aberta anteriormente.
O retorno é uma tabela Prisma em que cada índice (elemento da matriz) é uma string contendo o nome da subchave ou do valor listado.
Outra função interessante aqui é:
1 |
local t = win.RegObtInfoValor(k , v ) |
em que ‘k’ é a chave aberta anteriormente. E ‘v’ é o nome da subchave ou valor contida na chave aberta ‘k’;
O retorno é uma tabela contendo os campos: .tipo = tipo de dado, e .tamanho = tamanho (bytes de um número, ou caracteres de uma string). Com isso é possível saber que tipo de dado está gravado na chave ou nome de valor listado.
Até mais, qualquer coisa não deixe de comentar aqui ou no fórum oficial.
Att. Adalberto Amorim Felipe.