none
Procurar por um 'ValueName' no registro RRS feed

  • Pergunta

  • Boa noite pessoal!

    Gostaria de saber, se tem de alguma maneira, em meu script .bat eu utilizar o 'reg query' para pesquisar por um 'ValueName', no caso o "EULA", dentro da chave "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\". Mas temos um porém, dentro desta chave há mais chaves e subchaves. É que preciso que mande procurar nessa principal, ou até mesmo até a '\Adobe\' pois caso mude a versão do Adobe a ser instalada, meu script não irá mais funcional.

    Desde já agradeço!


    Jonas Moura

    sábado, 6 de julho de 2013 23:36

Respostas

  • Jonas,

    Tenta este .BAT

    SET REG=HKLM\SOFTWARE\Wow6432Node\Adobe\Acrobat Reader
    SET CHAVE=EULA
    
    :: Verifica se existe a chave, se nao existe sai do script
    reg query "%REG%" /f %CHAVE% /s /c | Find /i "HKEY_LOCAL_MACHINE"
    IF NOT %errorlevel% EQU 0 GOTO :EOF
    
    ::RECUPERA O CAMINHO DA CHAVE
    reg query "%REG%" /f %CHAVE% /s /c | Find /i "HKEY_LOCAL_MACHINE" > %tmp%\regquery.txt
    set /p myvar= <%tmp%\regquery.txt
    
    ::SETA chave = 1
    REG ADD "%myvar%" /v %CHAVE% /t REG_DWORD /d 1 /f

    Se não funcionar exporte a sua chave que contém a EULA(pois no meu computador não tem) e cole o export aqui. Cole também a saída do script, se possivel um print da execução do script.


    Fábio de Paula Junior


    terça-feira, 9 de julho de 2013 22:54
    Moderador

Todas as Respostas

  • Jonas,

    Não entendi o que você precisa, pode manda um print da chave que vc quer?

    Veja que usando a opção /s você consegue listar todas as chaves

    reg query HKLM\software\Adobe /s

    Você também pode usar o find pra buscar o que vc precisa

    reg query HKLM\software\Wow6432Node\Adobe /s | find /i "EULA"


    Fábio de Paula Junior

    segunda-feira, 8 de julho de 2013 19:49
    Moderador
  • Jonas,

    Não entendi o que você precisa, pode manda um print da chave que vc quer?

    Veja que usando a opção /s você consegue listar todas as chaves

    reg query HKLM\software\Adobe /s

    Você também pode usar o find pra buscar o que vc precisa

    reg query HKLM\software\Wow6432Node\Adobe /s | find /i "EULA"


    Fábio de Paula Junior

    A sua segunda opção me 'clariou', mas ainda falta algo mais..

    Com,

    reg query HKLM\software\Wow6432Node\Adobe /s | find /i "EULA"

    eu consigo achar o Valor, no caso 'EULA' sem problemas..

    É que é assim, meu problema é que a chave após '\Adobe\', é a '11.0', porém com a atualização do adobe, vai chegar um dia que vai ser 12.0 ou até mesmo 11.1, e o meu script está apontando direto para a pasta onde está o EULA, ou seja, 

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\11.0\AdobeViewer" /v EULA /t REG_DWORD /d "1" /f

    e quando a versão mudar, o caminho completo vai mudar e meu script não irá funcionar.

    Bom, com a segunda opção que você deu, consigo pelo menos buscar o EULA em umas 2 pastas anteriores, blz.. mas agora preciso fazer com que se exista esse Valor 'EULA' ele seja trocado para '1'.

    Usar 'if %errorlevel%'?

    Acho o mais adequado, creio!

    Compreendesse agora minha duvida? Meu problema?


    Jonas Moura

    segunda-feira, 8 de julho de 2013 22:29
  • Já aproveitando o embalo.. gostaria de saber, caso souberes..

    Tenho um script de instalação de programas, em massa, como 7 programas, tudo automatizado via batch.

    Porém quero que no final gere um log da instalação de cada, pode ser um em um mesmo .txt, sem problemas, só para ver o que foi concluído com êxito e o que não foi. Se souberes me dizer, serei grato também, mais uma vez.


    Jonas Moura

    segunda-feira, 8 de julho de 2013 22:45
  • Jonas,

    Uma maneira bem simples que eu costumo utilizar é apenas escrever em um arquivo.

    Às vezes usando o %errorlever% para verificar e dou um 'echo "Instalado em computador %comp%" >> c:\logs.txt'


    Att, Paulo Rocha

    segunda-feira, 8 de julho de 2013 23:33
  • Não entendi a logica da variável %comp% na linha de comando..

    Jonas Moura

    terça-feira, 9 de julho de 2013 00:28
  • Com isso,

    HKLM\Software\Adobe /s | find /i "EULA"

    Consigo localizar o Value dentro de muitas 'pastas', porém tenho que fazer um teste, se caso esse Value ("EULA") estiver em "0", tenho que por ele em "1". E caso já esteja em "1", coisa que não vai acontecer, então tanto faz.

    Até pensei em passa o resultado do comando acima para um .txt, porém teria como saber analisar ele.

    Resultado:

        EULA REG_DWORD 0x1

    No meu caso só interessa o "0x1" que na realidade estará em "0x0" como padrão na instalação do Adobe.

    Caso tenham alguma dúvida, só perguntar.


    Jonas Moura

    terça-feira, 9 de julho de 2013 12:58
  • Bueno, estava procurando aqui e encontrei o comando 'findstr' que procura por caracteres em um arquivo.

    Utilizei da seguinte maneira:

    findstr /C:"0x1" Value.Eula.txt

    e me retorna:

    FINDSTR: não foi possível abrir Value.Eula.txt

    se o comando fosse executado com êxito era somente por um "if %errorlevel%" após e estava 'pelada a coruja'. Porém o comando me retorna esse erro.

    Sugestões? Ajuda? :)


    Jonas Moura

    terça-feira, 9 de julho de 2013 13:13
  • Estava digitando o nome do arquivo .txt errado! Hehe

    Agora vou continuar aqui para ver se dá algum resultado...


    Jonas Moura

    terça-feira, 9 de julho de 2013 13:14
  • Gente,

    a questão é a seguinte, preciso de alguma maneira saber onde ficar o caminho completo para o Valor 'EULA'.

    Tem algum comando que pode me fornecer isso? Algum parâmetro do comando 'find' juntamente com o 'reg query'?


    Jonas Moura

    terça-feira, 9 de julho de 2013 14:06
  • Jonas,

    Tenta este .BAT

    SET REG=HKLM\SOFTWARE\Wow6432Node\Adobe\Acrobat Reader
    SET CHAVE=EULA
    
    :: Verifica se existe a chave, se nao existe sai do script
    reg query "%REG%" /f %CHAVE% /s /c | Find /i "HKEY_LOCAL_MACHINE"
    IF NOT %errorlevel% EQU 0 GOTO :EOF
    
    ::RECUPERA O CAMINHO DA CHAVE
    reg query "%REG%" /f %CHAVE% /s /c | Find /i "HKEY_LOCAL_MACHINE" > %tmp%\regquery.txt
    set /p myvar= <%tmp%\regquery.txt
    
    ::SETA chave = 1
    REG ADD "%myvar%" /v %CHAVE% /t REG_DWORD /d 1 /f

    Se não funcionar exporte a sua chave que contém a EULA(pois no meu computador não tem) e cole o export aqui. Cole também a saída do script, se possivel um print da execução do script.


    Fábio de Paula Junior


    terça-feira, 9 de julho de 2013 22:54
    Moderador
  • Não seria os '/f' que na linha de comando 'reg query' não existem? Não entendi eles..

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader\11.0\AdobeViewer]
    "EULA"=dword:00000000

    • Editado Jonas Moura quarta-feira, 10 de julho de 2013 00:43 Erro na digitação
    quarta-feira, 10 de julho de 2013 00:36
  • Jonas,

    Veja que de diferente tem apenas o caminho da chave (porque meu sistema é 64bits).

    Dá uma olhada se foi gerado o arquivo regquery.txt dentro do %TMP% e envie o conteúdo dele também.


    Fábio de Paula Junior

    quarta-feira, 10 de julho de 2013 11:55
    Moderador