O registro do Windows é o lugar onde ficam gravadas muitas configurações importantes do sistema e também de programas instalados. Neste exemplo você vai ver como é possível manipular as chaves de registro através da biblioteca win em Prisma.
Veja:
Criando uma chave:
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
/** Exemplo 01 Como criar uma chave e uma subchave. E como gravar um valor string nela. ** inclua'win' //ante inclua a biblioteca win k = win.RegCrieChave( HKEY_CURRENT_USER , //root hkey uma variável predefinida em win. 'PrismaInfo', //subchave a ser criada REG_OPCAO_NAO_VOLATIL, //opcao = cria uma chave persistente KEY_ACESSO_TOTAL //TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE ); imprima(k); se k entao imprima"sucesso" ret = win.RegDefValor(k , 'valor1' , REG_EXPAND_SZ , '%TEMP% "\\PRISMA\\"' ); se ret entao imprima'sucesso' fim; ret = win.RegDefValor( k , '' , REG_SZ , 'ola mundo'); se ret entao imprima'sucesso' fim; win.RegFecheChave(k); fim //criando uma sub chave: //abrindo a chave criada com o modo de abertura KEY_CRIE_SUB_CHAVE: //poderia ser: KEY_ACESSO_TOTAL também. chave = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo' , KEY_CRIE_SUB_CHAVE ); //criando sua subchave: /** a sub chave é uma chave normal dentro de outra, aquelas que no editor de registros é necessário clicar no + para vê-las. ex.: + |_PrismaInfo+ |_ Diretorios { prisma.exe = "C:\\Prisma\\1.0\\bin" } ** /**passando a chave criada para criarmos sua subchave** subchave = win.RegCrieChave( chave , //chave para criarmos sua sub chave 'Diretorios', //subchave a ser criada REG_OPCAO_NAO_VOLATIL, //opcao = cria uma chave persistente KEY_ACESSO_TOTAL //TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE ); se subchave entao //REG_OPCAO_VOLATIL = a chave é apagada ao reiniciar o Windows ret = win.RegDefValor( subchave , 'prisma.exe' , REG_SZ, 'C:\\Prisma\\1.0\\bin'); se ret entao imprima'valor gravado com sucesso' fim; win.RegFecheChave( subchave ); senao imprima( conv_c'chave não pôde ser gravada'); fim |
Detalhes:
ret = win.RegCrieChave( chave, nome , opcao , tipo_acesso );
Em que:
ret – é o retorno que pode ser o id da chave criada ou nulo caso haja erro;
nome – é a string nome da subchave que aparecerá no regedit.
opcao – é a opção de persistência da chave. Veja algumas opções:
1 2 |
REG_OPCAO_NAO_VOLATIL -- A CHAVE É PERMANENTE. REG_OPCAO_VOLATIL -- A CHAVE É PERDIDA AO DESLIGAR O COMPUTADOR (temporária). |
tipo_acesso – é o tipo de manipulação que você vai fazer com a chave, use um destes abaixo:
1 2 3 4 |
KEY_ACESSO_TOTAL - essa é ótima se você pretende fazer várias coisas com a mesma chave aberta. KEY_CRIE_SUB_CHAVE - esta serve apenas para criar uma chave. KEY_LEITURA - para ler um dado de uma chave do registro. KEY_ESCRITA - para escrever em uma chave do registro |
Definindo um valor para a chave criada:
1 |
ret = win.RegDefValor( subchave , 'nome_valor' , tipo , valor ); |
ret é o retorno da função que pode ser verdadeiro em caso de sucesso ou nulo caso falhe.
subchave – é a chave retornada da função de RegCrieChave ou RegAbraChave.
nome_valor – é o nome da variável que receberá o valor
tipo – é o tipo do valor que pode ser:
1 2 3 4 5 6 7 |
REG_BINARY -- tipo binário é uma matriz de números binários de 0 a 255 cada. Ex.: bin = {1,2,6,33,244,255}; REG_DWORD -- tipo número. Ex.: 1000; REG_EXPAND_SZ -- tipo de string com variáveis de ambiente. Ex.: "%TEMP%\\prismatemp\\"; REG_MULTI_SZ -- tipo tabela de strings. Ex.: mult_str = {"Nome" , "Idade" , "Telefone" , "endereço" }; REG_NONE -- nenhum tipo definido; REG_QWORD -- número também, mas com suporte a 64 bits (qualquer número em Lua e Prisma). Ex.: 2555 REG_SZ -- tipo string. Qualquer valor entre aspas. Ex.: "Prisma - linguagem de programação"; |
Perceba que não traduzi os tipos acima pois iria causar confusão, visto que, mesmo no idioma português, o registro exibe esses tipos e não a tradução. E também são fáceis de se aprender.
Note que se não precisar mais da chave é necessário fechá-la:
1 |
win.RegFecheChave( subchave ); |
onde subchave é a chave, aberta ou criada, para ser fechada;
Note que temos chaves predefinidas, são as chaves mestras do registro, eis elas:
1 2 3 4 5 6 7 |
HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_DYN_DATA HKEY_LOCAL_MACHINE HKEY_PERFORMANCE_DATA HKEY_USERS |
Também não teria sentido traduzir estas chaves pois elas aparecem assim no regedit sem tradução. Abra o regedit, pressione o botão com a bandeira do windows + R do teclado, após abrir a janela de executar comandos, digite regedit dentro e tecle enter.
Ao abrir o Regedit, navegue nas chaves à esquerda e tente achar a chave criada nesse exemplo em:
1 2 3 |
KEY_CURRENT_USER >PrismaInfo >Diretorios = [ prisma.exe REG_SZ "C:\\Prisma\\1.0\\bin"] |
Se foi útil compartilhe, ajude este projeto. Qualquer dúvida poste nos comentários ou no< fórum prisma>