USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Listar conteudo de uma chave no regedit
Falcao
DIADEMA
SP - BRASIL
ENUNCIADA !
Postada em 27/08/2008 16:25 hs            
Boa tarde,

Como faço para listar as chaves que o caminho HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall possui?

Eu estava tentando ler os conteudos da chave através do comando reg.RegRead, mas o problema é que necessito saber o valor correto de cada chave lá dentro. Então gostaria de criar um loop para que ele me liste todo esse conteúdo.

Alguém poderia me ajudar?
   
CODER_EXPERT
GOIÂNIA
GO - BRASIL
ENUNCIADA !
Postada em 28/08/2008 22:20 hs            
Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftMaxWriteTime As Any) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

Const ERROR_NO_MORE_ITEMS = 259&
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_LOCAL_MACHINE = &H80000002

Private Sub Form_Load()
    Dim hKey As Long, Cnt As Long
    Dim sName As String
    Dim sData As String
    Dim Ret As Long
    Dim RetData As Long
    Dim sSubKey As String
    Dim sKey As String
    Dim sValue As String
    
    Const BUFFER_SIZE As Long = 255
    Ret = BUFFER_SIZE
    
    sSubKey = "SOFTWAREMicrosoftWindowsCurrentVersionRun"
    
    'Abre a chave do registro
    If RegOpenKey(HKEY_LOCAL_MACHINE, sSubKey, hKey) = 0 Then
        sName = Space(BUFFER_SIZE)
        sData = Space(BUFFER_SIZE)
        Ret = BUFFER_SIZE
        RetData = BUFFER_SIZE
        
        'Enumera os valores
        While RegEnumValue(hKey, Cnt, sName, Ret, 0, ByVal 0&, ByVal sData, RetData) <> ERROR_NO_MORE_ITEMS
            If RetData > 0 Then
              sKey = Left$(sName, Ret)
              sValue = Left$(sData, RetData - 1)
              
              MsgBox sKey & "=" & sValue
            End If

            Cnt = Cnt + 1
            sName = Space(BUFFER_SIZE)
            sData = Space(BUFFER_SIZE)
            Ret = BUFFER_SIZE
            RetData = BUFFER_SIZE
        Wend
        
        RegCloseKey hKey
    Else
        'Erro ao enumerar chaves do registro
    End If
End Sub

Excelent Code
   
Falcao
DIADEMA
SP - BRASIL
ENUNCIADA !
Postada em 29/08/2008 00:05 hs            
Boa noite coder_expert.

Obrigado pelo interesse em me ajudar.

Eu acabei de testar seus códigos e é quase isso que quero.

O que reparei é que tenho que colocar na variável sSubkey o caminho que pretendo pesquisar. Meu interesse é pesquisar o conteúdo da sub-chave "SOFTWAREMicrosoftWindowsCurrentVersionUninstall"

Eu gostaria que o programa me mostrasse todas as sub-pastas existentes nesse caminho. Pelo teste que fiz verifiquei o programa está exibindo os valores apenas quando eu indico uma chave especifica como por exemplo sSubKey = "SOFTWAREMicrosoftWindowsCurrentVersionUninstallWebshots".

Dentro de Uninstall eu possuo pelo menos 10 chaves diferentes e é isso que eu gostaria que o programa fizesse automático me informando o conteúdo de cada chave, sem que eu precisa saber os nomes delas.

Você acha que é possível dessa maneira?

Mais uma vez fico agradecido pela sua atenção
   
CODER_EXPERT
GOIÂNIA
GO - BRASIL
ENUNCIADA !
Postada em 29/08/2008 01:09 hs            
Boa noite, eis o código para Enumerar Chaves (Sub-Pastas)

Option Explicit

Const ERROR_NO_MORE_ITEMS = 259&
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_LOCAL_MACHINE = &H80000002

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftMaxWriteTime As Any) As Long

Private Sub Form_Load()
    Dim hKey As Long, Cnt As Long, sName As String, sData As String, Ret As Long, RetData As Long
    Const BUFFER_SIZE As Long = 255
    Dim sFKey   As String
    Dim sSubKey As String
    
    sSubKey = "SOFTWARE"
    
    If RegOpenKey(HKEY_LOCAL_MACHINE, sSubKey, hKey) = 0 Then
        sName = Space(BUFFER_SIZE)

        While RegEnumKeyEx(hKey, Cnt, sName, Ret, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) <> ERROR_NO_MORE_ITEMS
            sFKey = Left$(sName, Ret)
            
            MsgBox sFKey
            
            Cnt = Cnt + 1
            sName = Space(BUFFER_SIZE)
            Ret = BUFFER_SIZE
        Wend
        RegCloseKey hKey
    Else
        'Erro ao invocar RegOpenKey
    End If
End Sub

Excelent Code
   
Falcao
DIADEMA
SP - BRASIL
ENUNCIADA !
Postada em 04/09/2008 08:52 hs            
coder_Expert,

Obrigado pelas dicas. Agora está funcionando do jeito que eu queria.

Abraços,
   
Moisés
não registrado
ENUNCIADA !
Postada em 22/07/2011 11:46 hs   
Bom dia CODER_EXPERT!
Eu gostaria de saber se tem alguma forma de criar no REGEDIT de criamos um LOOP depois de uma determinada data, somente alterando alguma(s) chaves nele contido?

grato
   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página