{"id":1474,"date":"2015-10-16T21:43:02","date_gmt":"2015-10-17T01:43:02","guid":{"rendered":"http:\/\/linguagemprisma.net\/blog\/?p=1474"},"modified":"2015-10-17T10:07:29","modified_gmt":"2015-10-17T14:07:29","slug":"registro-do-windows-biblioteca-win","status":"publish","type":"post","link":"https:\/\/linguagemprisma.br4.biz\/blog\/win\/registro-do-windows-biblioteca-win\/","title":{"rendered":"Registro do Windows &#8211; biblioteca win. (Criando uma chave, subchave e valores)"},"content":{"rendered":"<p>O registro do Windows \u00e9 o lugar onde ficam gravadas muitas configura\u00e7\u00f5es importantes do sistema e tamb\u00e9m de programas instalados. Neste exemplo voc\u00ea vai ver como \u00e9 poss\u00edvel manipular as chaves de registro atrav\u00e9s da biblioteca win em Prisma.<\/p>\n<p>Veja:<\/p>\n<p>Criando uma chave:<\/p>\n<pre class=\"lang:prisma decode:true \">\/**\r\n  Exemplo 01\r\n  \r\n  Como criar uma chave e uma subchave. E como gravar um valor string nela.\r\n\r\n**\r\ninclua'win' \/\/ante inclua a biblioteca win\r\n\r\nk = win.RegCrieChave( \r\n              HKEY_CURRENT_USER ,  \/\/root hkey uma vari\u00e1vel predefinida em win.\r\n              'PrismaInfo', \/\/subchave a ser criada\r\n              REG_OPCAO_NAO_VOLATIL, \/\/opcao = cria uma chave persistente\r\n              KEY_ACESSO_TOTAL     \/\/TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE\r\n              );\r\nimprima(k);\r\nse k entao imprima\"sucesso\" \r\n\r\n   ret = win.RegDefValor(k , 'valor1' , REG_EXPAND_SZ , '%TEMP% \"\\\\PRISMA\\\\\"' );\r\n   se ret entao imprima'sucesso' fim;\r\n\r\n   ret = win.RegDefValor( k , '' , REG_SZ , 'ola mundo');\r\n   se ret entao imprima'sucesso' fim;\r\n\r\n   win.RegFecheChave(k);\r\n\r\nfim\r\n\r\n\/\/criando uma sub chave:\r\n\r\n\/\/abrindo a chave criada com o modo de abertura KEY_CRIE_SUB_CHAVE:\r\n\/\/poderia ser: KEY_ACESSO_TOTAL tamb\u00e9m.\r\nchave = win.RegAbraChave( HKEY_CURRENT_USER , 'PrismaInfo' , KEY_CRIE_SUB_CHAVE );\r\n\r\n\/\/criando sua subchave:\r\n\/**\r\na sub chave \u00e9 uma chave normal dentro de outra, aquelas que no editor de registros\r\n\u00e9 necess\u00e1rio clicar no + para v\u00ea-las.\r\nex.:\r\n+\r\n|_PrismaInfo+\r\n            |_ Diretorios { prisma.exe = \"C:\\\\Prisma\\\\1.0\\\\bin\" }\r\n\r\n**\r\n\r\n\/**passando a chave criada para criarmos sua subchave**\r\n\r\nsubchave = win.RegCrieChave( \r\n               chave ,  \/\/chave para criarmos sua sub chave\r\n              'Diretorios', \/\/subchave a ser criada\r\n              REG_OPCAO_NAO_VOLATIL, \/\/opcao = cria uma chave persistente\r\n              KEY_ACESSO_TOTAL     \/\/TIPO DE ABERTURA, PARA CRIACAO DE SUB_CHAVE\r\n              );\r\nse subchave entao\r\n\r\n\/\/REG_OPCAO_VOLATIL = a chave \u00e9 apagada ao reiniciar o Windows\r\n\r\nret = win.RegDefValor( subchave , 'prisma.exe' , REG_SZ, 'C:\\\\Prisma\\\\1.0\\\\bin');\r\n\r\nse ret entao imprima'valor gravado com sucesso' fim;\r\n\r\nwin.RegFecheChave( subchave );\r\n\r\nsenao \r\n              imprima( conv_c'chave n\u00e3o p\u00f4de ser gravada');\r\nfim\r\n\r\n<\/pre>\n<p>Detalhes:<\/p>\n<p>ret = win.RegCrieChave( chave, nome , opcao , tipo_acesso );<\/p>\n<p>Em que:<\/p>\n<p>ret\u00a0 &#8211; \u00e9 o retorno que pode ser o id da chave criada ou nulo caso haja erro;<\/p>\n<p>nome &#8211; \u00e9 a string nome da subchave que aparecer\u00e1 no regedit.<\/p>\n<p>opcao &#8211; \u00e9 a op\u00e7\u00e3o de persist\u00eancia da chave. Veja algumas op\u00e7\u00f5es:<\/p>\n<pre class=\"\">REG_OPCAO_NAO_VOLATIL -- A CHAVE \u00c9 PERMANENTE.\r\nREG_OPCAO_VOLATIL  -- A CHAVE \u00c9 PERDIDA AO DESLIGAR O COMPUTADOR (tempor\u00e1ria).<\/pre>\n<p>tipo_acesso &#8211; \u00e9 o tipo de manipula\u00e7\u00e3o que voc\u00ea vai fazer com a chave, use um destes abaixo:<\/p>\n<pre class=\"\">KEY_ACESSO_TOTAL - essa \u00e9 \u00f3tima se voc\u00ea pretende fazer v\u00e1rias coisas com a mesma chave aberta.\r\nKEY_CRIE_SUB_CHAVE - esta serve apenas para criar uma chave.\r\nKEY_LEITURA - para ler um dado de uma chave do registro.\r\nKEY_ESCRITA - para escrever em uma chave do registro<\/pre>\n<p>&nbsp;<\/p>\n<p>Definindo um valor para a chave criada:<\/p>\n<pre class=\"lang:prisma decode:true\">ret = win.RegDefValor( subchave , 'nome_valor' , tipo , valor );<\/pre>\n<p>ret \u00e9 o retorno da fun\u00e7\u00e3o que pode ser verdadeiro em caso de sucesso ou\u00a0 nulo caso falhe.<\/p>\n<p>subchave &#8211; \u00e9 a chave retornada da fun\u00e7\u00e3o de RegCrieChave ou RegAbraChave.<\/p>\n<p>nome_valor &#8211; \u00e9 o nome da vari\u00e1vel que receber\u00e1 o valor<\/p>\n<p>tipo &#8211; \u00e9 o tipo do valor que pode ser:<\/p>\n<pre class=\"\">REG_BINARY -- tipo bin\u00e1rio \u00e9 uma matriz de n\u00fameros bin\u00e1rios de 0 a 255 cada. Ex.: bin = {1,2,6,33,244,255};\r\nREG_DWORD -- tipo n\u00famero. Ex.:  1000;\r\nREG_EXPAND_SZ -- tipo de string com vari\u00e1veis de ambiente. Ex.:  \"%TEMP%\\\\prismatemp\\\\\";\r\nREG_MULTI_SZ -- tipo tabela de strings. Ex.: mult_str = {\"Nome\" , \"Idade\" , \"Telefone\" , \"endere\u00e7o\" };\r\nREG_NONE -- nenhum tipo definido;\r\nREG_QWORD -- n\u00famero tamb\u00e9m, mas com suporte a 64 bits (qualquer n\u00famero em Lua e Prisma). Ex.: 2555\r\nREG_SZ -- tipo string. Qualquer valor entre aspas. Ex.: \"Prisma - linguagem de programa\u00e7\u00e3o\";<\/pre>\n<p>Perceba que n\u00e3o traduzi os tipos acima pois iria causar confus\u00e3o, visto que, mesmo no idioma portugu\u00eas, o registro exibe esses tipos e n\u00e3o a tradu\u00e7\u00e3o. E tamb\u00e9m s\u00e3o f\u00e1ceis de se aprender.<\/p>\n<p>Note que se n\u00e3o precisar mais da chave \u00e9 necess\u00e1rio fech\u00e1-la:<\/p>\n<pre class=\"lang:prisma decode:true\">win.RegFecheChave( subchave );<\/pre>\n<p>onde subchave \u00e9 a chave, aberta ou criada, para ser fechada;<\/p>\n<p>Note que temos chaves predefinidas, s\u00e3o as chaves mestras do registro, eis elas:<\/p>\n<pre class=\"\">HKEY_CLASSES_ROOT\r\nHKEY_CURRENT_CONFIG\r\nHKEY_CURRENT_USER\r\nHKEY_DYN_DATA\r\nHKEY_LOCAL_MACHINE\r\nHKEY_PERFORMANCE_DATA\r\nHKEY_USERS<\/pre>\n<p>Tamb\u00e9m n\u00e3o teria sentido traduzir estas chaves pois elas aparecem assim no regedit sem tradu\u00e7\u00e3o. Abra o regedit, pressione o bot\u00e3o com a bandeira do windows + R do teclado, ap\u00f3s abrir a janela de executar comandos, digite regedit dentro e tecle enter.<\/p>\n<p>Ao abrir o Regedit, navegue nas chaves \u00e0 esquerda e tente achar a chave criada nesse exemplo em:<\/p>\n<pre class=\"\">KEY_CURRENT_USER\r\n                &gt;PrismaInfo\r\n                            &gt;Diretorios = [ prisma.exe     REG_SZ    \"C:\\\\Prisma\\\\1.0\\\\bin\"]<\/pre>\n<p>&nbsp;<\/p>\n<p>Se foi \u00fatil compartilhe, ajude este projeto. Qualquer d\u00favida poste nos coment\u00e1rios ou no<a href=\"http:\/\/linguagemprisma.net\/prisma_forum\" target=\"_blank\">&lt; f\u00f3rum prisma&gt;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O registro do Windows \u00e9 o lugar onde ficam gravadas muitas configura\u00e7\u00f5es importantes do sistema e tamb\u00e9m de programas instalados. Neste exemplo voc\u00ea vai ver como \u00e9 poss\u00edvel manipular as chaves de registro atrav\u00e9s da biblioteca win em Prisma. Veja: Criando uma chave: \/** Exemplo 01 Como criar uma chave e uma subchave. E como&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-1474","post","type-post","status-publish","format-standard","hentry","category-win"],"_links":{"self":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/comments?post=1474"}],"version-history":[{"count":8,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1474\/revisions"}],"predecessor-version":[{"id":1484,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/posts\/1474\/revisions\/1484"}],"wp:attachment":[{"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/media?parent=1474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/categories?post=1474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linguagemprisma.br4.biz\/blog\/wp-json\/wp\/v2\/tags?post=1474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}