Ir ao conteúdo
  • Cadastre-se

Ler sub-chave do registro


Posts recomendados

Boa tarde,

Estou desenvolvendo um programa em que eu bloqueio portas remotas, portas locais e IPs conectados à determinada máquina.

O devido item bloqueado é colocado no registro (HKEY_LOCAL_MACHINE\ASS\BLOCK\[LP, RP ou IP]) e até aí sem problemas.

Gostaria de saber se tem algum jeito de ler uma sub-chave inteira, para saber, por exemplo, quantas sequências do LP estão em "1" para eu poder adicionar em uma lista que será mostrada no software.

Uma alternativa que encontrei é criar um arquivo .INI e salvar o que foi bloqueado nele para, quando iniciar o programa novamente seja carregado os bloqueios anteriores, mas se possível quero fazer isso direto pelo registro (o código já está grande demais e ainda estou na metade :(

Obrigado pela atenção

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Que eu saiba, isso não pode ser feito, pois a API RegQueryValueEx só lê uma propriedade por vez.

Mas dependendo de como você dá nomes às propriedades dentro das chaves, você pode fazer isso numa estrutura "For... Next" ou mesmo "Do... Loop".

Você poderia criar uma espécie de array, definindo um índice para cada propriedade.

Por exemplo, valor supor que você grave assim:

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_0

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_1

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_2

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_3

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_4

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_5

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_6

... etc etc etc...

HKEY_LOCAL_MACHINE\ASS\BLOCK\LP_LP_999

Note nas propriedades (LP_0, LP_1, etc...) que o valor em vermelho é o índice que você vai usar para consultar via código.

Você poderia fazer algo como:

Const QtdIndices As Integer = 999

Dim Indice As Integer, ValorAtual As String

For Indice = 0 to QtdIndices

   ReDim Preserve LP(Indice)

   ValorAtual = SuaFuncaoRegistry("LP_" & Indice)

    If ValorAtual = "1" Then AdicionarNaLista

Next

Dentro dessa estrutura, quando chamar a API RegQueryValueEx, basta passar como valor do argumento "lpValueName" o nome da propridade grava no Registry, por exemplo: LP_Indice

Agora estou sem tempo de criar um exemplo mais completo, mas seria mais ou menos isso.

[]'s

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...