A novidade aqui é a função de apagar valores ou subchaves vazias. (o restante já foi explicado nos posts anteriores)
1 |
ret = win.RegDeleteValor( ch , 'TESTE_STR' ); |
Ela retorna verdadeiro em caso de sucesso ou nulo em caso de falha.
Dica: use win.poe( win.ObtErroMsg() ) para ver o último erro em caso de falha;
Obs. No Windows 7 e superiores é necessário elevar o privilégio para administrador. No exemplo abaixo uso a função win.Execute com o parâmetro “runas” ( run = corra/execute; as = como (adminstrador) ) para chamar o próprio programa em modo administrativo.
Obs. Não é possível apagar uma chave que tenha uma subchave e valores, para isso apague primeiro os valores e subchaves e depois apague a chave maior. Para saber como listar os nomes de subchaves pesquise o post com o título: Enumerando chaves e valores.
Veja 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 49 50 51 52 53 54 55 56 57 58 59 |
inclua'win'; se args[1] <> 'naorepita' entao //arg 1 nao existe ainda //Elevando privilégio necessário para salvar e restaurar chaves win.Execute( nulo , //aqui vai o id da janela ou nulo 'runas' , //runas pede para executar como administrador. args[-1] , //interpretador que está executando args[0] .. ' naorepita ' , //o script prisma sendo executado + arg 1 win.ObtPastaAtual() //pasta onde será aberto. ); //arg 1 existe agora = naorepita sis.saia(0); //saindo fim //o arg 1 passado é para ter um controle e não gerar um loop no programa abrindo a si mesmo infinitamente. //para apagar um valor dentro de uma chave é fácil: //abra a chave onde entá o valor: ch = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo', KEY_ESCRITA ); se ch entao imprima'chave aberta com sucesso' ret = win.RegDeleteValor( ch , 'TESTE_BIN' );//deletando o valor se ret entao imprima('valor TESTE_BIN foi apagado com sucesso\n'); senao imprima'erro ao apagar valor TESTE_BIN'; fim ret = win.RegDeleteValor( ch , 'TESTE_STR' ); se ret entao imprima('valor TESTE_STR foi apagado com sucesso\n'); senao imprima'erro ao apagar valor TESTE_STR'; fim win.RegFecheChave(ch); ret = win.RegDeleteValor( HKEY_CURRENT_USER , 'prisma' ); senao imprima( conv_c'ERRO: chave não pôde ser aberta ou encontrada\n'); fim //para apagar uma chave inteira de registro também é fácil, veja: //neste caso vai falhar por que nao é possivel deletar uma chave que contem além de valores uma subchave. //teríamos que enumerar os itens dentro da chave, apaga-los e depois apagar a chave maior. ret = win.RegDeleteChave( HKEY_CURRENT_USER , 'PrismaInfo'); //o retorno é verdadeiro ou nulo se ret entao imprima"SUCESSO" senao imprima(conv_c'ERRO: chave não pôde ser deletada ou encontrada\n'); fim win.poe'Ok para sair...'; |
Até a próxima, qualquer dúvida ou crítica não deixe de usar os comentários ou o fórum oficial aqui.