Usuário com melhor resposta
Procurar por um 'ValueName' no registro

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
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
- Editado Fábio JrModerator terça-feira, 9 de julho de 2013 22:57 Erro no código
- Sugerido como Resposta Fábio JrModerator quinta-feira, 18 de julho de 2013 12:19
- Marcado como Resposta Fábio JrModerator segunda-feira, 9 de setembro de 2013 16:12
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
-
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
-
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
-
-
-
Com isso,
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
-
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
-
-
-
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
- Editado Fábio JrModerator terça-feira, 9 de julho de 2013 22:57 Erro no código
- Sugerido como Resposta Fábio JrModerator quinta-feira, 18 de julho de 2013 12:19
- Marcado como Resposta Fábio JrModerator segunda-feira, 9 de setembro de 2013 16:12
-
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
-