Gravar e Ler Registro do windows (regedit)
Moderador: Moderadores
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Pessoal, como já migrei de clipper para harbour atráves da HMG, quero implementar algumas funções anti-pirataria q no meu antigo clipper não era possível.
Então, estou criando um aplicativo em DELPHI que gera uma licença temporária por 30 dias. Esse aplicativo cria 1 arquivo secreto, cria registros secretos no REGEDIT além de outras coisas.
Bom, mas no meu programa em harbour (ex clipper) quero amarrar todos os 3 procedimentos. Um deles é acessar o registro do windows.
Então, como faço uma rotina(função/procedure) que verifica no REGEDIT se existe os tais registros?
Traduzindo, preciso gravar(write) e ler (read) os registros do windows,lembrando que isso precisa estar dentro do meu aplicativo em clipper/harbour e não no delphi como já faço.
Alguém sabe resolver essa questão?
Grato, MICROVOLUTION!
Então, estou criando um aplicativo em DELPHI que gera uma licença temporária por 30 dias. Esse aplicativo cria 1 arquivo secreto, cria registros secretos no REGEDIT além de outras coisas.
Bom, mas no meu programa em harbour (ex clipper) quero amarrar todos os 3 procedimentos. Um deles é acessar o registro do windows.
Então, como faço uma rotina(função/procedure) que verifica no REGEDIT se existe os tais registros?
Traduzindo, preciso gravar(write) e ler (read) os registros do windows,lembrando que isso precisa estar dentro do meu aplicativo em clipper/harbour e não no delphi como já faço.
Alguém sabe resolver essa questão?
Grato, MICROVOLUTION!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Ola!
Harbour 3.2 ou 3.4
Exemplo do fork do Viktor.
Saudações,
Itamar M. Lins Jr.
Harbour 3.2 ou 3.4
Exemplo do fork do Viktor.
Código: Selecionar todos
#require "hbwin"
#define KEY_WOW64_64KEY 0x0100
#define KEY_WOW64_32KEY 0x0200
PROCEDURE Main()
LOCAL tmp
? win_regWrite( "HKCU\_TEST\mydword", 0x11223344, WIN_REG_DWORD )
? hb_NumToHex( win_regRead( "HKCU\_TEST\mydword" ) )
? win_regWrite( "HKCU\_TEST\myqword", 0x1122334455667788, WIN_REG_QWORD )
? hb_NumToHex( win_regRead( "HKCU\_TEST\myqword" ) )
Inkey( 0 )
? win_regDelete( "HKCU\_TEST\teszt" )
? win_regDelete( "HKCU\_TEST\" )
? ">" + win_GetCommandLineParam() + "<"
? ">" + wapi_GetCommandLine() + "<"
/* old API */
? ">" + hb_ValToStr( win_regGet( WIN_HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper" ) ) + "<"
/* new API */
? ">" + hb_ValToStr( win_regRead( "HKCU\Environment\PATH" ) ) + "<"
? ">" + hb_ValToStr( tmp := win_regRead( "HKCU\Control Panel\Desktop\Wallpaper" ) ) + "<"
? ">" + hb_ValToStr( win_regRead( "" ) ) + "<"
? win_regWrite( "HKCU\Control Panel\Desktop\Wallpaper", "harbour.bmp" )
? win_regRead( "HKCU\Control Panel\Desktop\Wallpaper" )
Inkey( 0 )
? win_regWrite( "HKCU\Control Panel\Desktop\Wallpaper", tmp )
? win_regRead( "HKLM\SOFTWARE\7-Zip\Path" )
IF hb_osIs64bit()
? win_regRead( "HKLM\SOFTWARE\7-Zip\Path",, KEY_WOW64_32KEY )
? win_regRead( "HKLM\SOFTWARE\7-Zip\Path",, KEY_WOW64_64KEY )
ENDIF
RETURN
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Mais outro que pode ser interessante.
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
/* Copyright 2014 Viktor Szakats (vszakats.net/harbour) */
#require "hbwin"
PROCEDURE Main()
? OS()
?
? "CurrentVersion", win_regRead( "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion" )
? "CurrentBuild", win_regRead( "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentBuild" )
?
? "2000OrUpper" , win_osIs2000OrUpper()
? "WinXPOrUpper", win_osIsWinXPOrUpper()
? "VistaOrUpper", win_osIsVistaOrUpper()
?
? "2000" , win_osIs2000()
? "XP" , win_osIsXP()
? "2003" , win_osIs2003()
? "Vista" , win_osIsVista()
? "7" , win_osIs7()
? "8" , win_osIs8()
? "81" , win_osIs81()
? "10" , win_osIs10()
?
? "95" , win_osIs95()
? "98" , win_osIs98()
? "9x" , win_osIs9x()
? "ME" , win_osIsME()
? "NT" , win_osIsNT()
? "NT351" , win_osIsNT351()
? "NT4" , win_osIsNT4()
? "TSClient" , win_osIsTSClient()
?
? hb_ValToExp( win_osVersionInfo() )
RETURN
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Prezado professor Itamar, mais uma vez agradeço à resposta tão hábil.
Bom:
1- isso vai funcionar no HMG 3.0.35?
2- observo que tem um "requere" é isso mesmo? não deveria ser "include"?
grato!
Bom:
1- isso vai funcionar no HMG 3.0.35?
2- observo que tem um "requere" é isso mesmo? não deveria ser "include"?
grato!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Você tem que saber, é qual versão do Harbour que a HMG 3.0.35 roda !HMG 3.0.35?
Conforme está indicando:
http://www.hmgforum.com/site/index.php? ... 0&Itemid=2
Não pode usar uma mais novinha não ? (nem tanto assim)HMG 3.0.35 (TEST)
File Name: hmg.3.0.35.exe
File Size: 24.73 MB
Date: 20. June 2010
Description:
Olhando o Changelog:HMG 3.0.46
File Name: HMG.3.0.46.exe
File Size: 38.91 MB
Date: 06. November 2012
Description:
- HMG 3.0.46 (Test) 2012/11/06
- Update to latest Harbour Nightly Build (18443 2012-11-05)
Código: Selecionar todos
2012-05-18 18:15 UTC+0300 Pavel Tsarenko (tpe2 at mail.ru)
* contrib/hbwin/win_reg.prg
* contrib/hbwin/tests/test_reg.prg
* added nRegSam (access mask) parameter into functions: win_regRead,
win_regWrite, win_regGet, win_regDelete, win_regQuery, win_regSet.
This parameter can be used in win32 applications, running under
win64 systems for access to 32-bit or 64-bit registry.
...
2009-02-04 00:29 UTC+0100 Viktor Szakats (vszakats.net/harbour)
* contrib/hbwin/win_reg.prg
* contrib/hbwin/win_osc.c
* contrib/hbwin/win_os.prg
* contrib/hbwin/win_tprn.prg
* contrib/hbwin/win_tprt.prg
* contrib/hbwin/win_dll.c
* contrib/hbwin/win_prn1.c
* contrib/hbwin/win_regc.c
* contrib/hbwin/tests/testreg.prg
* contrib/hbwin/tests/testole.prg
* Renaming hbwin lib functions to a common and bitwidth-neutral
namespace, which is WIN_*():
- W32_REGPATHSPLIT() -> WIN_REGPATHSPLIT()
- W32_REGREAD() -> WIN_REGREAD()
- W32_REGWRITE() -> WIN_REGWRITE()
- WIN32_REGCREATEKEYEX() -> WIN_REGCREATEKEYEX()
- WIN32_REGOPENKEYEX() -> WIN_REGOPENKEYEX()
- WIN32_REGQUERYVALUEEX() -> WIN_REGQUERYVALUEEX()
- WIN32_REGSETVALUEEX() -> WIN_REGSETVALUEEX()
- WIN32_REGCLOSEKEY() -> WIN_REGCLOSEKEY()
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Prezado Itamar e demais colegas professores, boa tarde!
Então, hoje é que finalmente consegui concluir uma outra alteração no meu aplicativo para que assim pudesse testar esses exemplos de manipulação do REGEDIT.
Bom, ou mau, não sei qual das opções, mas, infelizmente já no início apareceu a seguinte mensagem de erro:
"Error F0032 Invalid name folows #" se referindo ao comando:
já tente minúsculo e até mesmo eliminar a aspas e colocar a crase, como abaixo, mas nada de passar:
Alguém sabe a solução?
Grato,
MICROVOLUTION.
Então, hoje é que finalmente consegui concluir uma outra alteração no meu aplicativo para que assim pudesse testar esses exemplos de manipulação do REGEDIT.
Bom, ou mau, não sei qual das opções, mas, infelizmente já no início apareceu a seguinte mensagem de erro:
"Error F0032 Invalid name folows #" se referindo ao comando:
Código: Selecionar todos
REQUIRE "HBWIN"
Código: Selecionar todos
REQUIRE 'hbwin'
Grato,
MICROVOLUTION.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Prezados, "fucei" o dia todos e percebi os seguintes detalhes em minha máquina:
no meu computador tem 3 arquivos "HBWIN.CH" nos seguintes pastas:
- ..\xharbour\include
- ..\hmg.3.0.35\harbour\include
- ..\hmg.3.0.46\harbour\include
Pois então, percebi que esses 3 arquivos existem diferenças. Uns tem alguns comandos que às vezes nos outros não tem.
- também na minha pasta:
- ..\hb32\contrib\hbwin existe uma cópia do arquivo "HBWIN.CH" mas que ao abri-lo o conteúdo ou está corrompido ou é estranho assim mesmo. vejam o conteúdo dele:
Outra coisa que percebi, que esse comando, que em ambos os modelos de códigos sugeridos pelo prezado professor ITAMAR, tem um comando:
que não funciona de jeito nenhum e dá a mensagem de erro F0032 como já postei anteriormente.
Bom, como disse que arrumei uma solução foi a seguinte:
o tal comando "#REQUIRE HBWIN" substituí-o por "#INCLUDE HBWIN" só que como não sei qual dos arquivos HBWIN está sendo achado, mencionei no próprio "INCLUDE" o ondereço do arquivo que me interessa. E, num é que deu certo? vejam como fiz:
Bom, ficou muito legal.
Agora preciso saber se quando compilado e eu levar o .EXE (executável de meu aplicativo) nas máquinas que eu instalar se esse caminho não irá dar algum problema (lá no cliente)? Acho que a pergunta é bem amadora, mas, estou com a "cabeça saindo fumaça" quem nem esou pensando direito.
Só última coisa, preciso que leia um registro SEQUÊNCIA e, usando o mesmo comando que lê um DWORD não está dando certo.
Qual é o comando certo?
No exemplo abaixo mostro como estou acessando os registros do windows:
é nessa tmp2 que está acusando o erro, e está caindo no ELSE e executando o: COMANDOS 2 do segundo ELSE.
Já tentei mudar para uma das opções:
if .not. tmp2 = 0
if tmp2 <>0
if tmp2 <>"0"
if ! tmp2 =0"
mas infelizmente ou cai no ELSE, ou dá mensagem de erro:
Error BASE/1071 Argument error: = Called from MAIN (xxx) onde (xxx) é o número da linha contendo o erro, e, que no caso é exatamente onde estou falando.
No mais, falta só isso pra funcionar.
Aguardo mais instruções.
Grato,
MICROVOLUTION.
no meu computador tem 3 arquivos "HBWIN.CH" nos seguintes pastas:
- ..\xharbour\include
- ..\hmg.3.0.35\harbour\include
- ..\hmg.3.0.46\harbour\include
Pois então, percebi que esses 3 arquivos existem diferenças. Uns tem alguns comandos que às vezes nos outros não tem.
- também na minha pasta:
- ..\hb32\contrib\hbwin existe uma cópia do arquivo "HBWIN.CH" mas que ao abri-lo o conteúdo ou está corrompido ou é estranho assim mesmo. vejam o conteúdo dele:
Código: Selecionar todos
description=Windows specific functions (win-only)
skip={!allwin}
incpaths=.
headers=${hb_name}.ch
libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=png
{wce}libs=sms CellCore
Código: Selecionar todos
#REQUIRE HBWIN
Bom, como disse que arrumei uma solução foi a seguinte:
o tal comando "#REQUIRE HBWIN" substituí-o por "#INCLUDE HBWIN" só que como não sei qual dos arquivos HBWIN está sendo achado, mencionei no próprio "INCLUDE" o ondereço do arquivo que me interessa. E, num é que deu certo? vejam como fiz:
Código: Selecionar todos
#include "c:\hb32\contrib\hbwin\hbwin.ch"
Agora preciso saber se quando compilado e eu levar o .EXE (executável de meu aplicativo) nas máquinas que eu instalar se esse caminho não irá dar algum problema (lá no cliente)? Acho que a pergunta é bem amadora, mas, estou com a "cabeça saindo fumaça" quem nem esou pensando direito.
Só última coisa, preciso que leia um registro SEQUÊNCIA e, usando o mesmo comando que lê um DWORD não está dando certo.
Qual é o comando certo?
No exemplo abaixo mostro como estou acessando os registros do windows:
Código: Selecionar todos
tmp1=win_regRead( "HKCU\TESTE\teste1" ) // valor DWORD // está com os valores numérico e hexadecimal, respectivamente: 0 e 0x00000000
if tmp1 = 0 then
... comandos 1
else
... comandos 2
endif
tmp2=win_regRead( "HKCU\TESTE\teste2" ) // valor SEQUENCIA // está com os valor string (ab), respectivamente: 0
if tmp2 = 0 then
... comandos 1
else
... comandos 2
endif
Já tentei mudar para uma das opções:
if .not. tmp2 = 0
if tmp2 <>0
if tmp2 <>"0"
if ! tmp2 =0"
mas infelizmente ou cai no ELSE, ou dá mensagem de erro:
Error BASE/1071 Argument error: = Called from MAIN (xxx) onde (xxx) é o número da linha contendo o erro, e, que no caso é exatamente onde estou falando.
No mais, falta só isso pra funcionar.
Aguardo mais instruções.
Grato,
MICROVOLUTION.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Ola!
"REQUIRE" não funcionou porque vc está usando uma versão velha do Harbour.
Toda vez que for postar uma duvida é bom também se possível colocar a versão do seu Harbour, quando ele foi compilado.
Vc está usando uma versão do Harbour de no mínimo, do inicio de 2012!
Primeira menção da opção #REQUIRE!
Saudações,
Itamar M. Lins Jr.
"REQUIRE" não funcionou porque vc está usando uma versão velha do Harbour.
Toda vez que for postar uma duvida é bom também se possível colocar a versão do seu Harbour, quando ele foi compilado.
Vc está usando uma versão do Harbour de no mínimo, do inicio de 2012!
Primeira menção da opção #REQUIRE!
Código: Selecionar todos
2012-06-06 02:22 UTC+0200 Viktor Szakats (vszakats.net/harbour)
* contrib/hbrun/hbrun.prg
+ added experimental script syntax to dynamically load modules:
--- testcurl.hb
#require "hbcurl"
? curl_version()
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Olá prezado Itamar, bom dia!
Como ainda sou novo no ramo da migração e apesar dos grandes avanços, como já disse em outros tópicos deste tão conceituado fórum PCTOLEDO, acho q informei no início quando V.Sa. me respondeu pela primeira vez com os 2 exemplos de arquivos. Aí perguntei se funcionava no harbour HMG 3.0.35.
Bom, se ao instalar a HMG 3.0.35 ela não atualiza o harbour é porque tenho que aprender muito ainda.
Então, como faço para saber a versão do meu harbour? e como instalo a versão mais atual?
Lembrando que não posso mudar muito o que já está pronto, pois na migração, fiz as recomendações dos tópicos e a única ferramenta prática que comigo funcionou e sem precisar "de muito trabalho" e/ou arquivos "BATs" foi a HMG 3.0.35.
Tenho também a 3.0.46 (sem instalar), mas, optei pela versão e a foi a que está dando certo até agora.
Quanto ao "REQUIRE" e etc, "fuçano" aqui, consegui fazer funcionar e até mesmo para quem tinha dúvidas como eu, #ficaadica de como fiz:
Essa parte àcima, verifica se existe a CHAVE/REGISTRO no REGEDIT/REGDT32 do Windows (versão win xp), ainda não testei no Win VI, 7, ... em diante.
Já o código acima, funciona assim:
- 1º a CHAVE do REGEDIT de dentro do "TESTE2" é colocada para dentro da variável LOCAL de nome "RegTmp"
- 2º então verifico se ela existe através do "if .not. RegTmp <>nil", ou seja, se for NIL significa que ela não existe. Então o sistema vai para o ELSE e se encerra por violação (falta dessa chave).
- 3º agora, caso ela exista, ou seja, o conteúdo dela for diferente de "NIL" então é feita a verificação secundária. Qual o conteúdo que ela deve conter? O conteúdo deve ser uma string com o número 4, isso mesmo, uma string "4". Mas, para que a verificação dê certo, eu converto essa string "4" para um valor numérico pra se ter certeza que seja realmente o número 4. Se não for verdade o sistema encerra-se novamente.
Para tudo isso funcionar, com o meu harbour (HB32 é o nome da pasta e não sei que versão é) através da HMG 3.0.35 (que uso para compilar sem "burocracias" do código manual, pois estamos numa época em que tudo tem que ser mais rápido: aprendizado fácil, rápido e eficaz, etc...), usei no início no lugar de "REQUIRE" usei o seguinte:
Como disse acima, encontrei 3 "HBWIN.CH" dentro de meu computador, e se eu usar somente #include "HBWIN.CH" essas funções não funcionarão corretamente pois pegará um "HBWIN.CH" que não seja o que realmente funcione.
Bom, espero ter respondido ao caro professor Itamar e principalmente a outros internautas, não só do fórum, mas de toda rede "google" e/ou "yahoo" ao buscarem cheguem até aqui e saciem-se com as "pérolas" que por aqui encontramos.
Abraços,
MICROVOLUTION
http://www.mvinfo.wmx.net.br
Como ainda sou novo no ramo da migração e apesar dos grandes avanços, como já disse em outros tópicos deste tão conceituado fórum PCTOLEDO, acho q informei no início quando V.Sa. me respondeu pela primeira vez com os 2 exemplos de arquivos. Aí perguntei se funcionava no harbour HMG 3.0.35.
Bom, se ao instalar a HMG 3.0.35 ela não atualiza o harbour é porque tenho que aprender muito ainda.
Então, como faço para saber a versão do meu harbour? e como instalo a versão mais atual?
Lembrando que não posso mudar muito o que já está pronto, pois na migração, fiz as recomendações dos tópicos e a única ferramenta prática que comigo funcionou e sem precisar "de muito trabalho" e/ou arquivos "BATs" foi a HMG 3.0.35.
Tenho também a 3.0.46 (sem instalar), mas, optei pela versão e a foi a que está dando certo até agora.
Quanto ao "REQUIRE" e etc, "fuçano" aqui, consegui fazer funcionar e até mesmo para quem tinha dúvidas como eu, #ficaadica de como fiz:
Código: Selecionar todos
if .not. win_regRead( "HKCU\teste\teste1" ) = 1 // aqui verifica se existe a chave/registro "DWORD"
@ 07,00 say "Sistema violado" // acrescentada em 05/05/15w
inkey(0) // coloquei provisoriamente pra ver onde o SiCCA deu erro - 06/05/15w
close all
quit
endif
Código: Selecionar todos
Regtmp:= win_regRead( "HKCU\TESTE\teste2",,WIN_REG_EXPAND_SZ )
if ! RegTmp=nil
if val(Regtmp) < 4 .or. val(Regtmp) > 4
@ 07,00 say "Sistema Violado. Pressione <ENTER> para encerrar..." // acrescentada em 05/05/15w
close all
quit
endif
else
@ 07,00 say "Sistema Violado. Pressione <ENTER> para encerrar..." // acrescentada em 05/05/15w
close all
quit
endif
- 1º a CHAVE do REGEDIT de dentro do "TESTE2" é colocada para dentro da variável LOCAL de nome "RegTmp"
- 2º então verifico se ela existe através do "if .not. RegTmp <>nil", ou seja, se for NIL significa que ela não existe. Então o sistema vai para o ELSE e se encerra por violação (falta dessa chave).
- 3º agora, caso ela exista, ou seja, o conteúdo dela for diferente de "NIL" então é feita a verificação secundária. Qual o conteúdo que ela deve conter? O conteúdo deve ser uma string com o número 4, isso mesmo, uma string "4". Mas, para que a verificação dê certo, eu converto essa string "4" para um valor numérico pra se ter certeza que seja realmente o número 4. Se não for verdade o sistema encerra-se novamente.
Para tudo isso funcionar, com o meu harbour (HB32 é o nome da pasta e não sei que versão é) através da HMG 3.0.35 (que uso para compilar sem "burocracias" do código manual, pois estamos numa época em que tudo tem que ser mais rápido: aprendizado fácil, rápido e eficaz, etc...), usei no início no lugar de "REQUIRE" usei o seguinte:
Código: Selecionar todos
#include "G:\MVinfo\hb32\contrib\hbwin\hbwin.ch"
Bom, espero ter respondido ao caro professor Itamar e principalmente a outros internautas, não só do fórum, mas de toda rede "google" e/ou "yahoo" ao buscarem cheguem até aqui e saciem-se com as "pérolas" que por aqui encontramos.
Abraços,
MICROVOLUTION
http://www.mvinfo.wmx.net.br
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Olá pessao, "oia nóis aqui traveis"!!! rsrsrs
Como disse na minha postagem anterior que iria testar a funcionalidade no win 7 64 bits.
Então, criei as mesmas chaves que havia criado no win xp 32 bits aqui no Win 7 64 bits, e, infelizmente, o harbour parece que não lê as chaves ou não tem acesso ao REGEDIT.
Ele informa através do if then else, que a chave não existe.Então programa é encerrado.
Portanto,se alguém souber o que está faltando?
LEMBRANDO que meu harbour é HMG 3.0.35.
Grato,
MICROVOLUTION.
Como disse na minha postagem anterior que iria testar a funcionalidade no win 7 64 bits.
Então, criei as mesmas chaves que havia criado no win xp 32 bits aqui no Win 7 64 bits, e, infelizmente, o harbour parece que não lê as chaves ou não tem acesso ao REGEDIT.
Ele informa através do if then else, que a chave não existe.Então programa é encerrado.
Portanto,se alguém souber o que está faltando?
LEMBRANDO que meu harbour é HMG 3.0.35.
Grato,
MICROVOLUTION.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Ver a versão e compilador do harbour.LEMBRANDO que meu harbour é HMG 3.0.35.
Código: Selecionar todos
C:\devl\hwgui>harbour -build
Harbour 3.4.0dev (e5a72c3) (2015-05-05 18:14)
Copyright (c) 1999-2015, https://github.com/vszakats/harbour-core/
Harbour Build Info
---------------------------
Version: Harbour 3.4.0dev (e5a72c3) (2015-05-05 18:14)
Compiler: MinGW GNU C 4.9.1 (32-bit)
Platform: Windows 7 6.1.7601 Service Pack 1
PCode version: 0.3
Commit info: 2015-05-05 20:14:50 +0200
Commit ID: e5a72c3
Built on: May 5 2015 15:49:01
Build options:
---------------------------
C:\devl\hwgui>
Releia o que foi postado e use o Harbour mais novo! se for um BUG será consertado no novo e não nessa versão que vc está usando.
Código: Selecionar todos
IF hb_osIs64bit()
? win_regRead( "HKLM\SOFTWARE\7-Zip\Path",, KEY_WOW64_32KEY )
? win_regRead( "HKLM\SOFTWARE\7-Zip\Path",, KEY_WOW64_64KEY )
ENDIF
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- clodoaldomonteiro
- Usuário Nível 4

- Mensagens: 821
- Registrado em: 30 Dez 2006 13:17
- Localização: Teresina-PI
- Contato:
Gravar e Ler Registro do windows (regedit)
Itamar,
Eu uso o xHarbour 1.00 e pergunto se tem a hbwin.lib para esta versão?
Eu uso o xHarbour 1.00 e pergunto se tem a hbwin.lib para esta versão?
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
boa noite!
prezado Itamar e demais professores.
Tentei o código do HB_OSIS... e não dá certo.
Então deixei pra lá... até ontem, onde num cliente onde existe domínio win server 2003 e máquinas com win xp que até então funcionam muito bem.
Só que instalamos uma máquina com win 7 32 bits.
O sistema só executa se for com usuário administrador, pois não reconhece a linha de código abaixo:
O que devo fazer?
é como se não achasse as chaves acima no registro do win 7 (pois em cada estação é gravado o registro). E ao verificar manualmente na REGEDIT ou REGEDT32 a gente descobre que a chave está lá
... mas o detalhe é que parece que o sistema não executa ou o harbour não detecta/lê a chave via sistema dentro da regedit.
Parece que é um "tipo de bug" ou só funciona no usuário ADMINISTRADOR
alguém sabe por favor?
prezado Itamar e demais professores.
Tentei o código do HB_OSIS... e não dá certo.
Então deixei pra lá... até ontem, onde num cliente onde existe domínio win server 2003 e máquinas com win xp que até então funcionam muito bem.
Só que instalamos uma máquina com win 7 32 bits.
O sistema só executa se for com usuário administrador, pois não reconhece a linha de código abaixo:
Código: Selecionar todos
if .not. win_regRead( "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\OnGuard\Codigo" ) = 7777777
@ 01,00 say 'Registro de Controle Alterado !'
close all
quit
endifé como se não achasse as chaves acima no registro do win 7 (pois em cada estação é gravado o registro). E ao verificar manualmente na REGEDIT ou REGEDT32 a gente descobre que a chave está lá
... mas o detalhe é que parece que o sistema não executa ou o harbour não detecta/lê a chave via sistema dentro da regedit.
Parece que é um "tipo de bug" ou só funciona no usuário ADMINISTRADOR
alguém sabe por favor?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Gravar e Ler Registro do windows (regedit)
Ola!
No windows 7, para mexer no registro tem que está logado como administrador ou mudar na opção de execução do sistema, click com o botão direito em cima do ".exe" , escolher(marcar) "Executar como administrador".
Fora isso, digitar no "pesquisar programas e arquivos" ->" UAC" , e baixar o nivel de segurança para 0.
Saudações,
Itamar M. Lins Jr.
No windows 7, para mexer no registro tem que está logado como administrador ou mudar na opção de execução do sistema, click com o botão direito em cima do ".exe" , escolher(marcar) "Executar como administrador".
Fora isso, digitar no "pesquisar programas e arquivos" ->" UAC" , e baixar o nivel de segurança para 0.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Gravar e Ler Registro do windows (regedit)
Sim prezado professor. Então, como eu disse, o win 7 está logado numa rede win server 2003 (AD - DOMÍNIO). Então toda vez que se clica com botão direito o sistema pede o usuário e senha do administrador. Aí o usuário do grupo BALCAO (só fazem vendas) irão saber a senha que tem poderes pra tudo. Neste caso, teríamos que tentar criar um usuário administrador fictício que não logasse no servidor nem muito menos na própria estação. Mas, isso, não tenho nem ideia se funciona ou não.Itamar M. Lins Jr. escreveu:Ola!
...click com o botão direito em cima do ".exe" , escolher(marcar) "Executar como administrador".
Agora nesta opção, vou tentar e se der certo posto o resultado. ok?Fora isso, digitar no "pesquisar programas e arquivos" ->" UAC" , e baixar o nivel de segurança para 0
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
MICROVOLUTION - 16 anos Evoluindo Com Você!
Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!