none
Buscar valor na HKU RRS feed

  • Pergunta

  • Galera

    Bom dia

    Necessito levantar uma configuração, que é feita no perfil dos usuarios, e definida na HKU\S-1xxxxxx\software\myplusconsole\antfrau, e estou tendo dificuldades, existe alguma forma especifica para que um vbs compreenda e busque os valores dentro da HKU, lembrando que posso ter mais que um usuario utilizando a mesma estação.

    obrigado.

    sexta-feira, 26 de agosto de 2011 13:59

Respostas

  • Desculpa Marcelo, na hora de colar o código faltou um pedaço: a função:

    Function ReadReg(RegPath)
        Dim objRegistry, Key
        Set objRegistry = CreateObject(”Wscript.shell”)
        Key = objRegistry.RegRead(RegPath)
        ReadReg = Key
    End Function

    Mas vc já tinha arrumado.

    Quanto ao segundo onde dá o erro de não encontrar a chave:

    O pequeno trecho abaixo eu testei e funcionou, eu verifico o caminho do papel de parede, isto é para validar o código, no seu caso vc tem que ver se a chave realmente existe e se vc tem permissões de leitura nela.

    Temp = ReadReg("HKCU\Control Panel\Desktop\Wallpaper")
     WScript.Echo Temp
     
    
    Function ReadReg(RegPath)
       Dim objRegistry, Key
       Set objRegistry = CreateObject("Wscript.shell")
       Key = objRegistry.RegRead(RegPath)
       ReadReg = Key
     End Function
    
    

     

     

     


    Fábio de Paula Junior
    • Marcado como Resposta Marcelo TI segunda-feira, 29 de agosto de 2011 17:37
    sábado, 27 de agosto de 2011 04:15
    Moderador

Todas as Respostas

  • Marcelo,

    O S-1xxx seria o SID do usuário logado? se SIM este script deve ajudar

    strComputer = "."
    
    Set objNet = CreateObject("WScript.NetWork") 
    strUsuario = objNet.UserName
    strDominio = objNet.UserDomain
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set objAccount = objWMIService.Get _
      ("Win32_UserAccount.Name='" & strUsuario & "',Domain='" & strDominio & "'")
    
    strSID = objAccount.SID
    
    wscript.echo strSID
    
    Dim Temp
    
    '‘HKEY_CURRENT_USER = HKCU
    '‘HKEY_LOCAL_MACHINE = HKLM
    '‘HKEY_CLASSES_ROOT = HKCR
    '‘HKEY_USERS = HKEY_USERS
    '‘HKEY_CURRENT_CONFIG = HKEY_CURRENT_CONFIG
    
    
    SuaChave = ReadReg("HKU\" & strSID & "\software\myplusconsole\antfrau")
    

    Primeiro eu consigo o SID do usuário que está executando o script e em seguida monto a chave de registro com o SID que recuperei.

     


    Fábio de Paula Junior
    sexta-feira, 26 de agosto de 2011 15:27
    Moderador
  • Mas se vc quer retornar todas as chaves então:

     

    const HKEY_USERS = &H80000003
    strComputer = "."
    Set StdOut = WScript.StdOut
     
    Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
    strComputer & "\root\default:StdRegProv")
     
    strKeyPath = ""
    oReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys
     
    For Each subkey In arrSubKeys
     StdOut.WriteLine subkey
    Next
    

     

     

    Aqui vai listar o primeiro nivel de HEKY_USERS, vc só precisa concatenar a saída com a chave que vc precisa.

    Ref.: http://www.activexperts.com/activmonitor/windowsmanagement/scripts/operatingsystem/registry/


    Fábio de Paula Junior


    sexta-feira, 26 de agosto de 2011 16:07
    Moderador
  • Fabio

     

    Boa tarde

    obrigado pela resposta mais no primeiro codigo esta apresentado o seguinte erro:

    Erro de tempo de execução do Microsoft VBScript (25, 1) : Tipos incompatíveis: 'ReadReg'

    no segundo codigo esta apresentado o seguinte erro:

    Erro de tempo de execução do Microsoft VBScript (11, 1) : O objeto não é uma coleção

     

     

     

    sexta-feira, 26 de agosto de 2011 18:54
  • Fabio

    Mudei o codigo para um parametro existente nas estações, mais ele retorna o seguinte erro: WshShell.RegRead (26, 1) : Raiz inválida na chave do Registro

    Ele encontra o SID do usuario logado, monta o caminho certinho, batendo no registro o caminho todo existe mais mesmo assim retorna o erro a cima e nao traz o valor de configuração da chave.

    codigo alterado

    strComputer = "."

    Set objNet = CreateObject("WScript.NetWork") 
    strUsuario = objNet.UserName
    strDominio = objNet.UserDomain

    set oShell = CreateObject("WScript.Shell")
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

    Set objAccount = objWMIService.Get _
      ("Win32_UserAccount.Name='" & strUsuario & "',Domain='" & strDominio & "'")

    strSID = objAccount.SID

    wscript.echo strSID

    Dim Temp

    SuaChave = oShell.RegRead("HKU\"& strSID &"\Software\Microsoft\Windows\CurrentVersion\Internet Settings\EnableNegotiate")

    sexta-feira, 26 de agosto de 2011 20:24
  • Desculpa Marcelo, na hora de colar o código faltou um pedaço: a função:

    Function ReadReg(RegPath)
        Dim objRegistry, Key
        Set objRegistry = CreateObject(”Wscript.shell”)
        Key = objRegistry.RegRead(RegPath)
        ReadReg = Key
    End Function

    Mas vc já tinha arrumado.

    Quanto ao segundo onde dá o erro de não encontrar a chave:

    O pequeno trecho abaixo eu testei e funcionou, eu verifico o caminho do papel de parede, isto é para validar o código, no seu caso vc tem que ver se a chave realmente existe e se vc tem permissões de leitura nela.

    Temp = ReadReg("HKCU\Control Panel\Desktop\Wallpaper")
     WScript.Echo Temp
     
    
    Function ReadReg(RegPath)
       Dim objRegistry, Key
       Set objRegistry = CreateObject("Wscript.shell")
       Key = objRegistry.RegRead(RegPath)
       ReadReg = Key
     End Function
    
    

     

     

     


    Fábio de Paula Junior
    • Marcado como Resposta Marcelo TI segunda-feira, 29 de agosto de 2011 17:37
    sábado, 27 de agosto de 2011 04:15
    Moderador
  • Fabio

     

    Valeu cara muito obrigado.

    segunda-feira, 29 de agosto de 2011 17:37